From ff29664c28c91903f16f8bc9933d2962db648f61 Mon Sep 17 00:00:00 2001 From: Kasper Lund Date: Fri, 13 Jan 2023 15:12:56 +0100 Subject: [PATCH] Record input types for loads and invokes in type propagator (#1339) * Track input types for calls * Simplify * Allow block types --- src/compiler/propagation/type_database.cc | 53 +- src/compiler/propagation/type_database.h | 10 +- src/compiler/propagation/type_propagator.cc | 60 +- src/compiler/propagation/type_propagator.h | 11 +- src/compiler/propagation/type_stack.h | 2 + src/compiler/propagation/type_variable.cc | 2 +- .../type_propagation/gold/array_do_test.gold | 8 +- .../gold/array_do_test.gold-O2 | 8 +- tests/type_propagation/gold/block_test.gold | 120 +-- .../type_propagation/gold/block_test.gold-O2 | 120 +-- .../type_propagation/gold/deltablue_test.gold | 716 +++++++++--------- .../gold/deltablue_test.gold-O2 | 716 +++++++++--------- tests/type_propagation/gold/field_test.gold | 26 +- .../type_propagation/gold/field_test.gold-O2 | 26 +- tests/type_propagation/gold/finally_test.gold | 38 +- .../gold/finally_test.gold-O2 | 38 +- tests/type_propagation/gold/global_test.gold | 8 +- .../type_propagation/gold/global_test.gold-O2 | 8 +- tests/type_propagation/gold/lambda_test.gold | 24 +- .../type_propagation/gold/lambda_test.gold-O2 | 24 +- tests/type_propagation/gold/literal_test.gold | 2 +- .../gold/literal_test.gold-O2 | 2 +- tests/type_propagation/gold/local_test.gold | 52 +- .../type_propagation/gold/local_test.gold-O2 | 52 +- tests/type_propagation/gold/map_test.gold | 6 +- tests/type_propagation/gold/map_test.gold-O2 | 6 +- tests/type_propagation/gold/nlr_test.gold | 18 +- tests/type_propagation/gold/nlr_test.gold-O2 | 18 +- .../gold/non_local_branch_test.gold | 18 +- .../gold/non_local_branch_test.gold-O2 | 18 +- .../gold/non_local_return_test.gold | 12 +- .../gold/non_local_return_test.gold-O2 | 12 +- .../gold/null_equals_test.gold | 56 +- .../gold/null_equals_test.gold-O2 | 56 +- .../type_propagation/gold/richards_test.gold | 376 ++++----- .../gold/richards_test.gold-O2 | 376 ++++----- tests/type_propagation/gold/spawn_test.gold | 10 +- .../type_propagation/gold/spawn_test.gold-O2 | 10 +- tests/type_propagation/gold/try_test.gold | 4 +- tests/type_propagation/gold/try_test.gold-O2 | 4 +- .../type_propagation/gold/typecheck_test.gold | 30 +- .../gold/typecheck_test.gold-O2 | 30 +- tools/dump_types.toit | 14 +- 43 files changed, 1636 insertions(+), 1564 deletions(-) diff --git a/src/compiler/propagation/type_database.cc b/src/compiler/propagation/type_database.cc index 41b7e7999..f62b6e9f5 100644 --- a/src/compiler/propagation/type_database.cc +++ b/src/compiler/propagation/type_database.cc @@ -45,9 +45,9 @@ TypeDatabase::~TypeDatabase() { void TypeDatabase::check_top(uint8* bcp, Object* value) const { int position = program_->absolute_bci_from_bcp(bcp); - auto probe = usage_.find(position); - if (probe == usage_.end()) { - FATAL("usage not analyzed: %d", position); + auto probe = output_.find(position); + if (probe == output_.end()) { + FATAL("output not analyzed: %d", position); } TypeSet type = probe->second; if (type.is_block()) { @@ -159,9 +159,9 @@ const std::vector TypeDatabase::arguments(Method method) const { return result; } -const TypeSet TypeDatabase::usage(int position) const { - auto probe = usage_.find(position); - if (probe == usage_.end()) { +const TypeSet TypeDatabase::output(int position) const { + auto probe = output_.find(position); + if (probe == output_.end()) { return TypeSet::invalid(); } else { return probe->second; @@ -209,15 +209,30 @@ std::string TypeDatabase::as_json() const { out << "[\n"; bool first = true; - for (auto it : usage_) { + for (auto it : output_) { if (first) { first = false; } else { out << ",\n"; } - std::string type_string = it.second.as_json(program_); - out << " {\"position\": " << it.first; - out << ", \"type\": " << type_string << "}"; + + int position = it.first; + std::string output_string = it.second.as_json(program_); + out << " {\"position\": " << position; + if (input_.find(position) != input_.end()) { + out << ", \"input\": ["; + TypeStack* stack = input_.at(position); + for (int i = 0; i < stack->size(); i++) { + if (i != 0) { + out << ","; + } + TypeSet type = stack->get(i); + std::string type_string = type.as_json(program_); + out << type_string; + } + out << "]"; + } + out << ", \"output\": " << output_string << "}"; } for (auto it : methods_) { @@ -263,11 +278,23 @@ void TypeDatabase::add_argument(Method method, int n, const TypeSet type) { arguments->set(n, type); } -void TypeDatabase::add_usage(int position, const TypeSet type) { - ASSERT(usage_.find(position) == usage_.end()); +void TypeDatabase::add_input(int position, int n, int size, const TypeSet type) { + TypeStack* stack = null; + if (n == 0) { + ASSERT(input_.find(position) == input_.end()); + stack = new TypeStack(size - 1, size, words_per_type_); + input_[position] = stack; + } else { + stack = input_.at(position); + } + stack->set(n, type); +} + +void TypeDatabase::add_output(int position, const TypeSet type) { + ASSERT(output_.find(position) == output_.end()); TypeSet copy = copy_type(type); uint8 opcode = *(program_->bcp_from_absolute_bci(position)); - usage_.emplace(position, copy); + output_.emplace(position, copy); returns_.emplace(position + opcode_length[opcode], copy); } diff --git a/src/compiler/propagation/type_database.h b/src/compiler/propagation/type_database.h index cc5b2b86e..99ab4cb47 100644 --- a/src/compiler/propagation/type_database.h +++ b/src/compiler/propagation/type_database.h @@ -40,8 +40,7 @@ class TypeDatabase { const std::vector methods() const; const std::vector arguments(Method method) const; - const TypeSet usage(int position) const; - const TypeSet return_type(int position) const; + const TypeSet output(int position) const; std::string as_json() const; @@ -64,7 +63,9 @@ class TypeDatabase { std::vector types_; std::unordered_map methods_; - std::unordered_map usage_; + + std::unordered_map input_; + std::unordered_map output_; std::unordered_map returns_; static std::unordered_map cache_; @@ -73,7 +74,8 @@ class TypeDatabase { void add_method(Method method); void add_argument(Method method, int n, const TypeSet type); - void add_usage(int position, const TypeSet type); + void add_input(int position, int n, int size, const TypeSet type); + void add_output(int position, const TypeSet type); TypeSet copy_type(const TypeSet type); TypeStack* add_types_block(); diff --git a/src/compiler/propagation/type_propagator.cc b/src/compiler/propagation/type_propagator.cc index 883e31c01..2a7518e6f 100644 --- a/src/compiler/propagation/type_propagator.cc +++ b/src/compiler/propagation/type_propagator.cc @@ -259,16 +259,23 @@ void TypePropagator::propagate(TypeDatabase* types) { uint8* entry = program()->entry_task().entry(); type.clear(words_per_type()); type.add_instance(program()->task_class_id()); - types->add_usage(program()->absolute_bci_from_bcp(entry), type); + types->add_output(program()->absolute_bci_from_bcp(entry), type); } - sites_.for_each([&](uint8* site, Set& results) { + output_.for_each([&](uint8* site, Set& output) { type.clear(words_per_type()); - for (auto it = results.begin(); it != results.end(); it++) { + for (auto it = output.begin(); it != output.end(); it++) { type.add_all_also_blocks((*it)->type(), words_per_type()); } int position = program()->absolute_bci_from_bcp(site); - types->add_usage(position, type); + types->add_output(position, type); + }); + + input_.for_each([&](uint8* site, std::vector& variables) { + int position = program()->absolute_bci_from_bcp(site); + for (unsigned i = 0; i < variables.size(); i++) { + types->add_input(position, i, variables.size(), variables[i]->type()); + } }); // Group the methods and blocks based on the bytecode position, so @@ -400,6 +407,7 @@ void TypePropagator::call_method(MethodTemplate* caller, void TypePropagator::call_static(MethodTemplate* caller, TypeScope* scope, uint8* site, Method target) { TypeStack* stack = scope->top(); int arity = target.arity(); + if (site) add_input(site, stack, arity); std::vector arguments; stack->push_empty(); @@ -470,6 +478,7 @@ void TypePropagator::call_static(MethodTemplate* caller, TypeScope* scope, uint8 void TypePropagator::call_virtual(MethodTemplate* caller, TypeScope* scope, uint8* site, int arity, int offset) { TypeStack* stack = scope->top(); TypeSet receiver = stack->local(arity - 1); + if (site) add_input(site, stack, arity); std::vector arguments; stack->push_empty(); @@ -501,6 +510,7 @@ void TypePropagator::call_block(TypeScope* scope, uint8* site, int arity) { TypeStack* stack = scope->top(); TypeSet receiver = stack->local(arity - 1); BlockTemplate* block = receiver.block(); + if (site) add_input(site, stack, arity); // If we're passing too few arguments to the block, this will // throw so we do not need to update the block's argument types. @@ -568,8 +578,9 @@ void TypePropagator::load_lambda(TypeScope* scope, Method method) { void TypePropagator::load_field(MethodTemplate* user, TypeStack* stack, uint8* site, int index) { TypeSet instance = stack->local(0); - stack->push_empty(); + if (site) add_input(site, stack, 1); + stack->push_empty(); TypeSet::Iterator it(instance, words_per_type_); while (it.has_next()) { unsigned id = it.next(); @@ -603,7 +614,7 @@ void TypePropagator::load_outer(TypeScope* scope, uint8* site, int index) { // this particular access site. We use this merged type exclusively // for the output of the type propagator, so we don't actually // use the merged type anywhere in the analysis. - TypeVariable* merged = this->outer(site); + TypeVariable* merged = this->output(site); merged->type().add_all_also_blocks(value, words_per_type()); } @@ -623,7 +634,7 @@ bool TypePropagator::handle_typecheck_result(TypeScope* scope, uint8* site, bool scope->throw_maybe(); } } - outer(site)->type().add_all(stack->local(0), words_per_type()); + output(site)->type().add_all(stack->local(0), words_per_type()); if (as_check) stack->pop(); return can_succeed; } @@ -657,13 +668,13 @@ TypeVariable* TypePropagator::global_variable(int index) { } } -TypeVariable* TypePropagator::outer(uint8* site) { +TypeVariable* TypePropagator::output(uint8* site) { auto it = outers_.find(site); if (it == outers_.end()) { - TypeVariable* variable = new TypeVariable(words_per_type()); - outers_[site] = variable; - add_site(site, variable); - return variable; + TypeVariable* output = new TypeVariable(words_per_type()); + outers_[site] = output; + add_output(site, output); + return output; } else { return it->second; } @@ -675,8 +686,29 @@ void TypePropagator::enqueue(MethodTemplate* method) { enqueued_.push_back(method); } -void TypePropagator::add_site(uint8* site, TypeVariable* result) { - sites_[site].insert(result); +void TypePropagator::add_input(uint8* site, TypeStack* input, int n) { + auto probe = input_.find(site); + if (probe != input_.end()) { + std::vector& variables = probe->second; + ASSERT(variables.size() == n); + for (int i = 0; i < n; i++) { + TypeVariable* variable = variables[i]; + variable->type().add_all_also_blocks(input->local(n - i - 1), words_per_type()); + } + return; + } + + std::vector variables; + for (int i = 0; i < n; i++) { + TypeVariable* variable = new TypeVariable(words_per_type()); + variable->type().add_all_also_blocks(input->local(n - i - 1), words_per_type()); + variables.push_back(variable); + } + input_[site] = variables; +} + +void TypePropagator::add_output(uint8* site, TypeVariable* output) { + output_[site].insert(output); } MethodTemplate* TypePropagator::find_method(Method target, std::vector arguments) { diff --git a/src/compiler/propagation/type_propagator.h b/src/compiler/propagation/type_propagator.h index f699ed96c..25bb8e9ec 100644 --- a/src/compiler/propagation/type_propagator.h +++ b/src/compiler/propagation/type_propagator.h @@ -66,10 +66,12 @@ class TypePropagator { TypeVariable* global_variable(int index); TypeVariable* field(unsigned type, int index); - TypeVariable* outer(uint8* site); + TypeVariable* output(uint8* site); void enqueue(MethodTemplate* method); - void add_site(uint8* site, TypeVariable* result); + + void add_input(uint8* site, TypeStack* input, int n); + void add_output(uint8* site, TypeVariable* output); #define ENSURE_ENTRY_POINT(name, symbol, arity) \ void ensure_##name(); @@ -85,13 +87,14 @@ class TypePropagator { ENTRY_POINTS(HAS_ENTRY_POINT) #undef HAS_ENTRY_POINT - Map> sites_; + Map> input_; + Map> output_; std::unordered_map methods_; std::unordered_map blocks_; std::unordered_map globals_; - std::unordered_map outers_; + std::unordered_map outers_; // TODO(kasper): Rename this. std::unordered_map> fields_; std::vector enqueued_; diff --git a/src/compiler/propagation/type_stack.h b/src/compiler/propagation/type_stack.h index e090282ee..e49248983 100644 --- a/src/compiler/propagation/type_stack.h +++ b/src/compiler/propagation/type_stack.h @@ -44,6 +44,8 @@ class TypeStack { } int sp() const { return sp_; } + + int size() const { return size_; } int available() const { return size_ - (sp_ + 1); } TypeSet get(int index) { diff --git a/src/compiler/propagation/type_variable.cc b/src/compiler/propagation/type_variable.cc index 594d4787e..d07e4d484 100644 --- a/src/compiler/propagation/type_variable.cc +++ b/src/compiler/propagation/type_variable.cc @@ -20,7 +20,7 @@ namespace toit { namespace compiler { TypeSet TypeVariable::use(TypePropagator* propagator, MethodTemplate* user, uint8* site) { - if (site) propagator->add_site(site, this); + if (site) propagator->add_output(site, this); if (user) users_.insert(user); return type(); } diff --git a/tests/type_propagation/gold/array_do_test.gold b/tests/type_propagation/gold/array_do_test.gold index 5d89c6cef..267d299b2 100644 --- a/tests/type_propagation/gold/array_do_test.gold +++ b/tests/type_propagation/gold/array_do_test.gold @@ -1,18 +1,18 @@ main tests/type_propagation/array_do_test.toit 0[025] - load smi 1 - 1[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} - 4[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 1[053] - invoke static create_array_ /core/collections.toit // [{SmallInteger_}] -> {LargeArray_|SmallArray_} + 4[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 7[029] - load [block] in main tests/type_propagation/array_do_test.toit 12[015] - load local 1 13[038] - load block 1 - 15[058] - invoke virtual do // {Null_} + 15[058] - invoke virtual do // [{List_}, [block]] -> {Null_} 19[089] - return null S3 0 [block] in main tests/type_propagation/array_do_test.toit - argument 0: [block] - argument 1: {*} 0[016] - load local 2 - 1[053] - invoke static id tests/type_propagation/array_do_test.toit // {*} + 1[053] - invoke static id tests/type_propagation/array_do_test.toit // [{*}] -> {*} 4[088] - return S1 2 id tests/type_propagation/array_do_test.toit diff --git a/tests/type_propagation/gold/array_do_test.gold-O2 b/tests/type_propagation/gold/array_do_test.gold-O2 index 5d89c6cef..267d299b2 100644 --- a/tests/type_propagation/gold/array_do_test.gold-O2 +++ b/tests/type_propagation/gold/array_do_test.gold-O2 @@ -1,18 +1,18 @@ main tests/type_propagation/array_do_test.toit 0[025] - load smi 1 - 1[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} - 4[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 1[053] - invoke static create_array_ /core/collections.toit // [{SmallInteger_}] -> {LargeArray_|SmallArray_} + 4[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 7[029] - load [block] in main tests/type_propagation/array_do_test.toit 12[015] - load local 1 13[038] - load block 1 - 15[058] - invoke virtual do // {Null_} + 15[058] - invoke virtual do // [{List_}, [block]] -> {Null_} 19[089] - return null S3 0 [block] in main tests/type_propagation/array_do_test.toit - argument 0: [block] - argument 1: {*} 0[016] - load local 2 - 1[053] - invoke static id tests/type_propagation/array_do_test.toit // {*} + 1[053] - invoke static id tests/type_propagation/array_do_test.toit // [{*}] -> {*} 4[088] - return S1 2 id tests/type_propagation/array_do_test.toit diff --git a/tests/type_propagation/gold/block_test.gold b/tests/type_propagation/gold/block_test.gold index 5aabf06d8..60d08052a 100644 --- a/tests/type_propagation/gold/block_test.gold +++ b/tests/type_propagation/gold/block_test.gold @@ -23,10 +23,10 @@ test_simple tests/type_propagation/block_test.toit 1[029] - load [block] in test_simple tests/type_propagation/block_test.toit 6[025] - load smi 1 7[038] - load block 1 - 9[058] - invoke virtual repeat // {Null_} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 13[041] - pop 1 14[002] - pop, load local S0 - 16[053] - invoke static id tests/type_propagation/block_test.toit // {LargeInteger_|SmallInteger_} + 16[053] - invoke static id tests/type_propagation/block_test.toit // [{LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 19[089] - return null S2 0 [block] in test_simple tests/type_propagation/block_test.toit @@ -35,29 +35,29 @@ test_simple tests/type_propagation/block_test.toit 1[017] - load local 3 2[005] - load outer S1 // {LargeInteger_|SmallInteger_} 4[025] - load smi 1 - 5[073] - invoke add // {LargeInteger_|SmallInteger_} + 5[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[006] - store outer S1 8[088] - return S1 1 test_invokes tests/type_propagation/block_test.toit 0[029] - load [block] in test_invokes tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/block_test.toit // {SmallInteger_} + 7[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {SmallInteger_} 10[040] - pop 2 12[029] - load [block] in test_invokes tests/type_propagation/block_test.toit 17[020] - load literal horse 19[038] - load block 1 - 21[053] - invoke static invoke tests/type_propagation/block_test.toit // {String_} + 21[053] - invoke static invoke tests/type_propagation/block_test.toit // [{String_}, [block]] -> {String_} 24[040] - pop 2 26[029] - load [block] in test_invokes tests/type_propagation/block_test.toit 31[026] - load smi 87 33[038] - load block 1 - 35[053] - invoke static invoke tests/type_propagation/block_test.toit // {SmallInteger_} + 35[053] - invoke static invoke tests/type_propagation/block_test.toit // [{SmallInteger_}, [block]] -> {SmallInteger_} 38[040] - pop 2 40[029] - load [block] in test_invokes tests/type_propagation/block_test.toit 45[020] - load literal true 47[038] - load block 1 - 49[053] - invoke static invoke tests/type_propagation/block_test.toit // {True_} + 49[053] - invoke static invoke tests/type_propagation/block_test.toit // [{True_}, [block]] -> {True_} 52[089] - return null S2 0 [block] in test_invokes tests/type_propagation/block_test.toit @@ -83,7 +83,7 @@ test_invokes tests/type_propagation/block_test.toit 0[029] - load [block] in [block] in test_invokes tests/type_propagation/block_test.toit 5[017] - load local 3 6[038] - load block 1 - 8[053] - invoke static invoke tests/type_propagation/block_test.toit // {SmallInteger_} + 8[053] - invoke static invoke tests/type_propagation/block_test.toit // [{SmallInteger_}, [block]] -> {SmallInteger_} 11[004] - store local, pop S1 13[088] - return S1 2 @@ -99,7 +99,7 @@ test_invokes tests/type_propagation/block_test.toit 0[029] - load [block] in [block] in test_invokes tests/type_propagation/block_test.toit 5[017] - load local 3 6[038] - load block 1 - 8[053] - invoke static invoke tests/type_propagation/block_test.toit // {True_} + 8[053] - invoke static invoke tests/type_propagation/block_test.toit // [{True_}, [block]] -> {True_} 11[004] - store local, pop S1 13[088] - return S1 2 @@ -107,18 +107,18 @@ test_nesting tests/type_propagation/block_test.toit 0[022] - load null 1[029] - load [block] in test_nesting tests/type_propagation/block_test.toit 6[038] - load block 0 - 8[053] - invoke static invoke tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 8[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {String_|SmallInteger_} 11[041] - pop 1 12[002] - pop, load local S0 - 14[053] - invoke static id tests/type_propagation/block_test.toit // {String_|Null_|SmallInteger_} + 14[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 17[041] - pop 1 18[022] - load null 19[029] - load [block] in test_nesting tests/type_propagation/block_test.toit 24[038] - load block 0 - 26[053] - invoke static invoke tests/type_propagation/block_test.toit // {Null_|True_|float} + 26[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {Null_|True_|float} 29[041] - pop 1 30[002] - pop, load local S0 - 32[053] - invoke static id tests/type_propagation/block_test.toit // {Null_|True_|float} + 32[053] - invoke static id tests/type_propagation/block_test.toit // [{Null_|True_|float}] -> {Null_|True_|float} 35[089] - return null S3 0 [block] in test_nesting tests/type_propagation/block_test.toit @@ -136,18 +136,18 @@ test_nesting tests/type_propagation/block_test.toit 20[041] - pop 1 21[016] - load local 2 22[005] - load outer S1 // {String_|SmallInteger_} - 24[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 24[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 27[088] - return S1 1 [block] in test_nesting tests/type_propagation/block_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_nesting tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/block_test.toit // {True_|float} + 7[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {True_|float} 10[041] - pop 1 11[002] - pop, load local S2 13[005] - load outer S1 // {Null_|True_|float} - 15[053] - invoke static id tests/type_propagation/block_test.toit // {Null_|True_|float} + 15[053] - invoke static id tests/type_propagation/block_test.toit // [{Null_|True_|float}] -> {Null_|True_|float} 18[088] - return S1 1 [block] in [block] in test_nesting tests/type_propagation/block_test.toit @@ -168,7 +168,7 @@ test_nesting tests/type_propagation/block_test.toit 25[016] - load local 2 26[005] - load outer S3 // [block] 28[005] - load outer S1 // {True_|float} - 30[053] - invoke static id tests/type_propagation/block_test.toit // {True_|float} + 30[053] - invoke static id tests/type_propagation/block_test.toit // [{True_|float}] -> {True_|float} 33[088] - return S1 1 test_catch tests/type_propagation/block_test.toit @@ -176,7 +176,7 @@ test_catch tests/type_propagation/block_test.toit 1[029] - load [block] in test_catch tests/type_propagation/block_test.toit 6[094] - link try 0 8[038] - load block 4 - 10[055] - invoke block S1 // {False_} + 10[055] - invoke block S1 // [[block]] -> {False_} 12[041] - pop 1 13[095] - unlink try 0 15[096] - unwind @@ -186,20 +186,20 @@ test_catch tests/type_propagation/block_test.toit 23[038] - load block 0 25[022] - load null 26[022] - load null - 27[053] - invoke static catch /core/exceptions.toit // {*} + 27[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 30[041] - pop 1 31[002] - pop, load local S0 - 33[053] - invoke static id tests/type_propagation/block_test.toit // {Null_|SmallInteger_} + 33[053] - invoke static id tests/type_propagation/block_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 36[041] - pop 1 37[022] - load null 38[029] - load [block] in test_catch tests/type_propagation/block_test.toit 43[038] - load block 0 45[022] - load null 46[022] - load null - 47[053] - invoke static catch /core/exceptions.toit // {*} + 47[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 50[041] - pop 1 51[002] - pop, load local S0 - 53[053] - invoke static id tests/type_propagation/block_test.toit // {String_|Null_|float} + 53[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|Null_|float}] -> {String_|Null_|float} 56[089] - return null S4 0 [block] in test_catch tests/type_propagation/block_test.toit @@ -216,7 +216,7 @@ test_catch tests/type_propagation/block_test.toit 3[006] - store outer S1 5[041] - pop 1 6[020] - load literal woops - 8[053] - invoke static throw /core/exceptions.toit // {} + 8[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 11[088] - return S1 1 [block] in test_catch tests/type_propagation/block_test.toit @@ -236,14 +236,14 @@ test_too_few_arguments tests/type_propagation/block_test.toit 5[038] - load block 0 7[022] - load null 8[022] - load null - 9[053] - invoke static catch /core/exceptions.toit // {*} + 9[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 12[089] - return null S2 0 [block] in test_too_few_arguments tests/type_propagation/block_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_too_few_arguments tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/block_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {} 10[040] - pop 2 12[026] - load smi 42 14[053] - invoke static id tests/type_propagation/block_test.toit @@ -255,12 +255,12 @@ test_modify_outer tests/type_propagation/block_test.toit 3[029] - load [block] in test_modify_outer tests/type_propagation/block_test.toit 8[026] - load smi 2 10[038] - load block 1 - 12[058] - invoke virtual repeat // {Null_} + 12[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 16[041] - pop 1 17[002] - pop, load local S1 - 19[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 19[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 22[002] - pop, load local S0 - 24[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 24[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 27[089] - return null S3 0 [block] in test_modify_outer tests/type_propagation/block_test.toit @@ -280,12 +280,12 @@ test_modify_outer_nested tests/type_propagation/block_test.toit 3[029] - load [block] in test_modify_outer_nested tests/type_propagation/block_test.toit 8[026] - load smi 2 10[038] - load block 1 - 12[058] - invoke virtual repeat // {Null_} + 12[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 16[041] - pop 1 17[002] - pop, load local S1 - 19[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 19[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 22[002] - pop, load local S0 - 24[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 24[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 27[089] - return null S3 0 [block] in test_modify_outer_nested tests/type_propagation/block_test.toit @@ -293,14 +293,14 @@ test_modify_outer_nested tests/type_propagation/block_test.toit 0[029] - load [block] in [block] in test_modify_outer_nested tests/type_propagation/block_test.toit 5[026] - load smi 3 7[038] - load block 1 - 9[058] - invoke virtual repeat // {Null_} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 13[041] - pop 1 14[002] - pop, load local S2 16[005] - load outer S2 // {String_|SmallInteger_} - 18[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 18[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 21[002] - pop, load local S2 23[005] - load outer S1 // {String_|SmallInteger_} - 25[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 25[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 28[088] - return S1 1 [block] in [block] in test_modify_outer_nested tests/type_propagation/block_test.toit @@ -320,35 +320,35 @@ test_modify_outer_nested tests/type_propagation/block_test.toit test_recursion tests/type_propagation/block_test.toit 0[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static recursive_null tests/type_propagation/block_test.toit // {Null_|SmallInteger_} + 7[053] - invoke static recursive_null tests/type_propagation/block_test.toit // [[block]] -> {Null_|SmallInteger_} 10[040] - pop 2 12[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 17[038] - load block 0 - 19[053] - invoke static recursive_null tests/type_propagation/block_test.toit // {Null_|False_} + 19[053] - invoke static recursive_null tests/type_propagation/block_test.toit // [[block]] -> {Null_|False_} 22[040] - pop 2 24[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 29[038] - load block 0 - 31[053] - invoke static recursive_call tests/type_propagation/block_test.toit // {SmallInteger_} + 31[053] - invoke static recursive_call tests/type_propagation/block_test.toit // [[block]] -> {SmallInteger_} 34[040] - pop 2 36[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 41[038] - load block 0 - 43[053] - invoke static recursive_call tests/type_propagation/block_test.toit // {True_} + 43[053] - invoke static recursive_call tests/type_propagation/block_test.toit // [[block]] -> {True_} 46[040] - pop 2 48[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 53[038] - load block 0 - 55[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // {Null_|SmallInteger_} + 55[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // [[block]] -> {Null_|SmallInteger_} 58[040] - pop 2 60[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 65[038] - load block 0 - 67[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // {String_|Null_} + 67[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // [[block]] -> {String_|Null_} 70[040] - pop 2 72[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 77[038] - load block 0 - 79[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // {SmallInteger_} + 79[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // [[block]] -> {SmallInteger_} 82[040] - pop 2 84[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 89[038] - load block 0 - 91[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // {String_} + 91[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // [[block]] -> {String_} 94[089] - return null S2 0 [block] in test_recursion tests/type_propagation/block_test.toit @@ -394,15 +394,15 @@ test_recursion tests/type_propagation/block_test.toit test_dead tests/type_propagation/block_test.toit 0[029] - load [block] in test_dead tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static ignore tests/type_propagation/block_test.toit // {Null_} + 7[053] - invoke static ignore tests/type_propagation/block_test.toit // [[block]] -> {Null_} 10[040] - pop 2 12[029] - load [block] in test_dead tests/type_propagation/block_test.toit 17[038] - load block 0 - 19[053] - invoke static ignore tests/type_propagation/block_test.toit // {Null_} + 19[053] - invoke static ignore tests/type_propagation/block_test.toit // [[block]] -> {Null_} 22[040] - pop 2 24[029] - load [block] in test_dead tests/type_propagation/block_test.toit 29[038] - load block 0 - 31[053] - invoke static ignore tests/type_propagation/block_test.toit // {Null_} + 31[053] - invoke static ignore tests/type_propagation/block_test.toit // [[block]] -> {Null_} 34[089] - return null S2 0 recursive_null tests/type_propagation/block_test.toit @@ -411,11 +411,11 @@ recursive_null tests/type_propagation/block_test.toit 3[082] - branch if false T21 6[029] - load [block] in recursive_null tests/type_propagation/block_test.toit 11[038] - load block 0 - 13[053] - invoke static recursive_null tests/type_propagation/block_test.toit // {Null_} + 13[053] - invoke static recursive_null tests/type_propagation/block_test.toit // [[block]] -> {Null_} 16[004] - store local, pop S1 18[088] - return S1 1 21[016] - load local 2 - 22[055] - invoke block S1 // {Null_|False_|SmallInteger_} + 22[055] - invoke block S1 // [[block]] -> {Null_|False_|SmallInteger_} 24[088] - return S1 1 [block] in recursive_null tests/type_propagation/block_test.toit @@ -428,10 +428,10 @@ recursive_call tests/type_propagation/block_test.toit 0[053] - invoke static pick tests/type_propagation/block_test.toit // {True_|False_} 3[082] - branch if false T13 6[016] - load local 2 - 7[053] - invoke static recursive_call tests/type_propagation/block_test.toit // {True_|SmallInteger_} + 7[053] - invoke static recursive_call tests/type_propagation/block_test.toit // [[block]] -> {True_|SmallInteger_} 10[088] - return S1 1 13[016] - load local 2 - 14[055] - invoke block S1 // {True_|SmallInteger_} + 14[055] - invoke block S1 // [[block]] -> {True_|SmallInteger_} 16[088] - return S1 1 recursive_a_null tests/type_propagation/block_test.toit @@ -440,18 +440,18 @@ recursive_a_null tests/type_propagation/block_test.toit 3[082] - branch if false T21 6[029] - load [block] in recursive_a_null tests/type_propagation/block_test.toit 11[038] - load block 0 - 13[053] - invoke static recursive_b_null tests/type_propagation/block_test.toit // {Null_} + 13[053] - invoke static recursive_b_null tests/type_propagation/block_test.toit // [[block]] -> {Null_} 16[004] - store local, pop S1 18[088] - return S1 1 21[016] - load local 2 - 22[055] - invoke block S1 // {String_|Null_|SmallInteger_} + 22[055] - invoke block S1 // [[block]] -> {String_|Null_|SmallInteger_} 24[088] - return S1 1 recursive_b_null tests/type_propagation/block_test.toit - argument 0: [block] 0[029] - load [block] in recursive_b_null tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // {Null_} + 7[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // [[block]] -> {Null_} 10[004] - store local, pop S1 12[088] - return S1 1 @@ -465,23 +465,23 @@ recursive_a_call tests/type_propagation/block_test.toit 0[053] - invoke static pick tests/type_propagation/block_test.toit // {True_|False_} 3[082] - branch if false T13 6[016] - load local 2 - 7[053] - invoke static recursive_b_call tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 7[053] - invoke static recursive_b_call tests/type_propagation/block_test.toit // [[block]] -> {String_|SmallInteger_} 10[088] - return S1 1 13[016] - load local 2 - 14[055] - invoke block S1 // {String_|SmallInteger_} + 14[055] - invoke block S1 // [[block]] -> {String_|SmallInteger_} 16[088] - return S1 1 recursive_b_call tests/type_propagation/block_test.toit - argument 0: [block] 0[016] - load local 2 - 1[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 1[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // [[block]] -> {String_|SmallInteger_} 4[088] - return S1 1 maybe_throw tests/type_propagation/block_test.toit 0[053] - invoke static pick tests/type_propagation/block_test.toit // {True_|False_} 3[082] - branch if false T12 6[020] - load literal woops - 8[053] - invoke static throw /core/exceptions.toit // {} + 8[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 11[041] - pop 1 12[089] - return null S0 0 @@ -496,15 +496,15 @@ ignore tests/type_propagation/block_test.toit pick tests/type_propagation/block_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 invoke tests/type_propagation/block_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {String_|Null_|True_|float|SmallInteger_} + 1[055] - invoke block S1 // [[block]] -> {String_|Null_|True_|float|SmallInteger_} 3[088] - return S1 1 invoke tests/type_propagation/block_test.toit @@ -512,5 +512,5 @@ invoke tests/type_propagation/block_test.toit - argument 1: [block] 0[016] - load local 2 1[018] - load local 4 - 2[055] - invoke block S2 // {String_|True_|SmallInteger_} + 2[055] - invoke block S2 // [[block], {String_|True_|SmallInteger_}] -> {String_|True_|SmallInteger_} 4[088] - return S1 2 diff --git a/tests/type_propagation/gold/block_test.gold-O2 b/tests/type_propagation/gold/block_test.gold-O2 index ffc8069ab..5ca1ac8ed 100644 --- a/tests/type_propagation/gold/block_test.gold-O2 +++ b/tests/type_propagation/gold/block_test.gold-O2 @@ -23,10 +23,10 @@ test_simple tests/type_propagation/block_test.toit 1[029] - load [block] in test_simple tests/type_propagation/block_test.toit 6[025] - load smi 1 7[038] - load block 1 - 9[058] - invoke virtual repeat // {Null_} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 13[041] - pop 1 14[002] - pop, load local S0 - 16[053] - invoke static id tests/type_propagation/block_test.toit // {LargeInteger_|SmallInteger_} + 16[053] - invoke static id tests/type_propagation/block_test.toit // [{LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 19[089] - return null S2 0 [block] in test_simple tests/type_propagation/block_test.toit @@ -35,29 +35,29 @@ test_simple tests/type_propagation/block_test.toit 1[017] - load local 3 2[005] - load outer S1 // {LargeInteger_|SmallInteger_} 4[025] - load smi 1 - 5[073] - invoke add // {LargeInteger_|SmallInteger_} + 5[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[006] - store outer S1 8[088] - return S1 1 test_invokes tests/type_propagation/block_test.toit 0[029] - load [block] in test_invokes tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/block_test.toit // {SmallInteger_} + 7[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {SmallInteger_} 10[040] - pop 2 12[029] - load [block] in test_invokes tests/type_propagation/block_test.toit 17[020] - load literal horse 19[038] - load block 1 - 21[053] - invoke static invoke tests/type_propagation/block_test.toit // {String_} + 21[053] - invoke static invoke tests/type_propagation/block_test.toit // [{String_}, [block]] -> {String_} 24[040] - pop 2 26[029] - load [block] in test_invokes tests/type_propagation/block_test.toit 31[026] - load smi 87 33[038] - load block 1 - 35[053] - invoke static invoke tests/type_propagation/block_test.toit // {SmallInteger_} + 35[053] - invoke static invoke tests/type_propagation/block_test.toit // [{SmallInteger_}, [block]] -> {SmallInteger_} 38[040] - pop 2 40[029] - load [block] in test_invokes tests/type_propagation/block_test.toit 45[020] - load literal true 47[038] - load block 1 - 49[053] - invoke static invoke tests/type_propagation/block_test.toit // {True_} + 49[053] - invoke static invoke tests/type_propagation/block_test.toit // [{True_}, [block]] -> {True_} 52[089] - return null S2 0 [block] in test_invokes tests/type_propagation/block_test.toit @@ -83,7 +83,7 @@ test_invokes tests/type_propagation/block_test.toit 0[029] - load [block] in [block] in test_invokes tests/type_propagation/block_test.toit 5[017] - load local 3 6[038] - load block 1 - 8[053] - invoke static invoke tests/type_propagation/block_test.toit // {SmallInteger_} + 8[053] - invoke static invoke tests/type_propagation/block_test.toit // [{SmallInteger_}, [block]] -> {SmallInteger_} 11[004] - store local, pop S1 13[088] - return S1 2 @@ -99,7 +99,7 @@ test_invokes tests/type_propagation/block_test.toit 0[029] - load [block] in [block] in test_invokes tests/type_propagation/block_test.toit 5[017] - load local 3 6[038] - load block 1 - 8[053] - invoke static invoke tests/type_propagation/block_test.toit // {True_} + 8[053] - invoke static invoke tests/type_propagation/block_test.toit // [{True_}, [block]] -> {True_} 11[004] - store local, pop S1 13[088] - return S1 2 @@ -107,18 +107,18 @@ test_nesting tests/type_propagation/block_test.toit 0[022] - load null 1[029] - load [block] in test_nesting tests/type_propagation/block_test.toit 6[038] - load block 0 - 8[053] - invoke static invoke tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 8[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {String_|SmallInteger_} 11[041] - pop 1 12[002] - pop, load local S0 - 14[053] - invoke static id tests/type_propagation/block_test.toit // {String_|Null_|SmallInteger_} + 14[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 17[041] - pop 1 18[022] - load null 19[029] - load [block] in test_nesting tests/type_propagation/block_test.toit 24[038] - load block 0 - 26[053] - invoke static invoke tests/type_propagation/block_test.toit // {Null_|True_|float} + 26[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {Null_|True_|float} 29[041] - pop 1 30[002] - pop, load local S0 - 32[053] - invoke static id tests/type_propagation/block_test.toit // {Null_|True_|float} + 32[053] - invoke static id tests/type_propagation/block_test.toit // [{Null_|True_|float}] -> {Null_|True_|float} 35[089] - return null S3 0 [block] in test_nesting tests/type_propagation/block_test.toit @@ -136,18 +136,18 @@ test_nesting tests/type_propagation/block_test.toit 20[041] - pop 1 21[016] - load local 2 22[005] - load outer S1 // {String_|SmallInteger_} - 24[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 24[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 27[088] - return S1 1 [block] in test_nesting tests/type_propagation/block_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_nesting tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/block_test.toit // {True_|float} + 7[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {True_|float} 10[041] - pop 1 11[002] - pop, load local S2 13[005] - load outer S1 // {Null_|True_|float} - 15[053] - invoke static id tests/type_propagation/block_test.toit // {Null_|True_|float} + 15[053] - invoke static id tests/type_propagation/block_test.toit // [{Null_|True_|float}] -> {Null_|True_|float} 18[088] - return S1 1 [block] in [block] in test_nesting tests/type_propagation/block_test.toit @@ -168,7 +168,7 @@ test_nesting tests/type_propagation/block_test.toit 25[016] - load local 2 26[005] - load outer S3 // [block] 28[005] - load outer S1 // {True_|float} - 30[053] - invoke static id tests/type_propagation/block_test.toit // {True_|float} + 30[053] - invoke static id tests/type_propagation/block_test.toit // [{True_|float}] -> {True_|float} 33[088] - return S1 1 test_catch tests/type_propagation/block_test.toit @@ -176,7 +176,7 @@ test_catch tests/type_propagation/block_test.toit 1[029] - load [block] in test_catch tests/type_propagation/block_test.toit 6[094] - link try 0 8[038] - load block 4 - 10[055] - invoke block S1 // {False_} + 10[055] - invoke block S1 // [[block]] -> {False_} 12[041] - pop 1 13[095] - unlink try 0 15[096] - unwind @@ -186,20 +186,20 @@ test_catch tests/type_propagation/block_test.toit 23[038] - load block 0 25[022] - load null 26[022] - load null - 27[053] - invoke static catch /core/exceptions.toit // {*} + 27[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 30[041] - pop 1 31[002] - pop, load local S0 - 33[053] - invoke static id tests/type_propagation/block_test.toit // {Null_|SmallInteger_} + 33[053] - invoke static id tests/type_propagation/block_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 36[041] - pop 1 37[022] - load null 38[029] - load [block] in test_catch tests/type_propagation/block_test.toit 43[038] - load block 0 45[022] - load null 46[022] - load null - 47[053] - invoke static catch /core/exceptions.toit // {*} + 47[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 50[041] - pop 1 51[002] - pop, load local S0 - 53[053] - invoke static id tests/type_propagation/block_test.toit // {String_|Null_|float} + 53[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|Null_|float}] -> {String_|Null_|float} 56[089] - return null S4 0 [block] in test_catch tests/type_propagation/block_test.toit @@ -216,7 +216,7 @@ test_catch tests/type_propagation/block_test.toit 3[006] - store outer S1 5[041] - pop 1 6[020] - load literal woops - 8[053] - invoke static throw /core/exceptions.toit // {} + 8[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 11[088] - return S1 1 [block] in test_catch tests/type_propagation/block_test.toit @@ -236,14 +236,14 @@ test_too_few_arguments tests/type_propagation/block_test.toit 5[038] - load block 0 7[022] - load null 8[022] - load null - 9[053] - invoke static catch /core/exceptions.toit // {*} + 9[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 12[089] - return null S2 0 [block] in test_too_few_arguments tests/type_propagation/block_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_too_few_arguments tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/block_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/block_test.toit // [[block]] -> {} 10[004] - store local, pop S1 12[088] - return S1 1 @@ -253,12 +253,12 @@ test_modify_outer tests/type_propagation/block_test.toit 3[029] - load [block] in test_modify_outer tests/type_propagation/block_test.toit 8[026] - load smi 2 10[038] - load block 1 - 12[058] - invoke virtual repeat // {Null_} + 12[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 16[041] - pop 1 17[002] - pop, load local S1 - 19[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 19[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 22[002] - pop, load local S0 - 24[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 24[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 27[089] - return null S3 0 [block] in test_modify_outer tests/type_propagation/block_test.toit @@ -278,12 +278,12 @@ test_modify_outer_nested tests/type_propagation/block_test.toit 3[029] - load [block] in test_modify_outer_nested tests/type_propagation/block_test.toit 8[026] - load smi 2 10[038] - load block 1 - 12[058] - invoke virtual repeat // {Null_} + 12[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 16[041] - pop 1 17[002] - pop, load local S1 - 19[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 19[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 22[002] - pop, load local S0 - 24[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 24[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 27[089] - return null S3 0 [block] in test_modify_outer_nested tests/type_propagation/block_test.toit @@ -291,14 +291,14 @@ test_modify_outer_nested tests/type_propagation/block_test.toit 0[029] - load [block] in [block] in test_modify_outer_nested tests/type_propagation/block_test.toit 5[026] - load smi 3 7[038] - load block 1 - 9[058] - invoke virtual repeat // {Null_} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 13[041] - pop 1 14[002] - pop, load local S2 16[005] - load outer S2 // {String_|SmallInteger_} - 18[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 18[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 21[002] - pop, load local S2 23[005] - load outer S1 // {String_|SmallInteger_} - 25[053] - invoke static id tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 25[053] - invoke static id tests/type_propagation/block_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 28[088] - return S1 1 [block] in [block] in test_modify_outer_nested tests/type_propagation/block_test.toit @@ -318,35 +318,35 @@ test_modify_outer_nested tests/type_propagation/block_test.toit test_recursion tests/type_propagation/block_test.toit 0[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static recursive_null tests/type_propagation/block_test.toit // {Null_|SmallInteger_} + 7[053] - invoke static recursive_null tests/type_propagation/block_test.toit // [[block]] -> {Null_|SmallInteger_} 10[040] - pop 2 12[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 17[038] - load block 0 - 19[053] - invoke static recursive_null tests/type_propagation/block_test.toit // {Null_|False_} + 19[053] - invoke static recursive_null tests/type_propagation/block_test.toit // [[block]] -> {Null_|False_} 22[040] - pop 2 24[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 29[038] - load block 0 - 31[053] - invoke static recursive_call tests/type_propagation/block_test.toit // {SmallInteger_} + 31[053] - invoke static recursive_call tests/type_propagation/block_test.toit // [[block]] -> {SmallInteger_} 34[040] - pop 2 36[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 41[038] - load block 0 - 43[053] - invoke static recursive_call tests/type_propagation/block_test.toit // {True_} + 43[053] - invoke static recursive_call tests/type_propagation/block_test.toit // [[block]] -> {True_} 46[040] - pop 2 48[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 53[038] - load block 0 - 55[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // {Null_|SmallInteger_} + 55[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // [[block]] -> {Null_|SmallInteger_} 58[040] - pop 2 60[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 65[038] - load block 0 - 67[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // {String_|Null_} + 67[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // [[block]] -> {String_|Null_} 70[040] - pop 2 72[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 77[038] - load block 0 - 79[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // {SmallInteger_} + 79[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // [[block]] -> {SmallInteger_} 82[040] - pop 2 84[029] - load [block] in test_recursion tests/type_propagation/block_test.toit 89[038] - load block 0 - 91[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // {String_} + 91[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // [[block]] -> {String_} 94[089] - return null S2 0 [block] in test_recursion tests/type_propagation/block_test.toit @@ -392,15 +392,15 @@ test_recursion tests/type_propagation/block_test.toit test_dead tests/type_propagation/block_test.toit 0[029] - load [block] in test_dead tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static ignore tests/type_propagation/block_test.toit // {Null_} + 7[053] - invoke static ignore tests/type_propagation/block_test.toit // [[block]] -> {Null_} 10[040] - pop 2 12[029] - load [block] in test_dead tests/type_propagation/block_test.toit 17[038] - load block 0 - 19[053] - invoke static ignore tests/type_propagation/block_test.toit // {Null_} + 19[053] - invoke static ignore tests/type_propagation/block_test.toit // [[block]] -> {Null_} 22[040] - pop 2 24[029] - load [block] in test_dead tests/type_propagation/block_test.toit 29[038] - load block 0 - 31[053] - invoke static ignore tests/type_propagation/block_test.toit // {Null_} + 31[053] - invoke static ignore tests/type_propagation/block_test.toit // [[block]] -> {Null_} 34[089] - return null S2 0 recursive_null tests/type_propagation/block_test.toit @@ -409,11 +409,11 @@ recursive_null tests/type_propagation/block_test.toit 3[082] - branch if false T21 6[029] - load [block] in recursive_null tests/type_propagation/block_test.toit 11[038] - load block 0 - 13[053] - invoke static recursive_null tests/type_propagation/block_test.toit // {Null_} + 13[053] - invoke static recursive_null tests/type_propagation/block_test.toit // [[block]] -> {Null_} 16[004] - store local, pop S1 18[088] - return S1 1 21[016] - load local 2 - 22[055] - invoke block S1 // {Null_|False_|SmallInteger_} + 22[055] - invoke block S1 // [[block]] -> {Null_|False_|SmallInteger_} 24[088] - return S1 1 [block] in recursive_null tests/type_propagation/block_test.toit @@ -426,10 +426,10 @@ recursive_call tests/type_propagation/block_test.toit 0[053] - invoke static pick tests/type_propagation/block_test.toit // {True_|False_} 3[082] - branch if false T13 6[016] - load local 2 - 7[053] - invoke static recursive_call tests/type_propagation/block_test.toit // {True_|SmallInteger_} + 7[053] - invoke static recursive_call tests/type_propagation/block_test.toit // [[block]] -> {True_|SmallInteger_} 10[088] - return S1 1 13[016] - load local 2 - 14[055] - invoke block S1 // {True_|SmallInteger_} + 14[055] - invoke block S1 // [[block]] -> {True_|SmallInteger_} 16[088] - return S1 1 recursive_a_null tests/type_propagation/block_test.toit @@ -438,18 +438,18 @@ recursive_a_null tests/type_propagation/block_test.toit 3[082] - branch if false T21 6[029] - load [block] in recursive_a_null tests/type_propagation/block_test.toit 11[038] - load block 0 - 13[053] - invoke static recursive_b_null tests/type_propagation/block_test.toit // {Null_} + 13[053] - invoke static recursive_b_null tests/type_propagation/block_test.toit // [[block]] -> {Null_} 16[004] - store local, pop S1 18[088] - return S1 1 21[016] - load local 2 - 22[055] - invoke block S1 // {String_|Null_|SmallInteger_} + 22[055] - invoke block S1 // [[block]] -> {String_|Null_|SmallInteger_} 24[088] - return S1 1 recursive_b_null tests/type_propagation/block_test.toit - argument 0: [block] 0[029] - load [block] in recursive_b_null tests/type_propagation/block_test.toit 5[038] - load block 0 - 7[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // {Null_} + 7[053] - invoke static recursive_a_null tests/type_propagation/block_test.toit // [[block]] -> {Null_} 10[004] - store local, pop S1 12[088] - return S1 1 @@ -463,23 +463,23 @@ recursive_a_call tests/type_propagation/block_test.toit 0[053] - invoke static pick tests/type_propagation/block_test.toit // {True_|False_} 3[082] - branch if false T13 6[016] - load local 2 - 7[053] - invoke static recursive_b_call tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 7[053] - invoke static recursive_b_call tests/type_propagation/block_test.toit // [[block]] -> {String_|SmallInteger_} 10[088] - return S1 1 13[016] - load local 2 - 14[055] - invoke block S1 // {String_|SmallInteger_} + 14[055] - invoke block S1 // [[block]] -> {String_|SmallInteger_} 16[088] - return S1 1 recursive_b_call tests/type_propagation/block_test.toit - argument 0: [block] 0[016] - load local 2 - 1[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // {String_|SmallInteger_} + 1[053] - invoke static recursive_a_call tests/type_propagation/block_test.toit // [[block]] -> {String_|SmallInteger_} 4[088] - return S1 1 maybe_throw tests/type_propagation/block_test.toit 0[053] - invoke static pick tests/type_propagation/block_test.toit // {True_|False_} 3[082] - branch if false T12 6[020] - load literal woops - 8[053] - invoke static throw /core/exceptions.toit // {} + 8[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 11[041] - pop 1 12[089] - return null S0 0 @@ -494,15 +494,15 @@ ignore tests/type_propagation/block_test.toit pick tests/type_propagation/block_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 invoke tests/type_propagation/block_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {String_|Null_|True_|float|SmallInteger_} + 1[055] - invoke block S1 // [[block]] -> {String_|Null_|True_|float|SmallInteger_} 3[088] - return S1 1 invoke tests/type_propagation/block_test.toit @@ -510,5 +510,5 @@ invoke tests/type_propagation/block_test.toit - argument 1: [block] 0[016] - load local 2 1[018] - load local 4 - 2[055] - invoke block S2 // {String_|True_|SmallInteger_} + 2[055] - invoke block S2 // [[block], {String_|True_|SmallInteger_}] -> {String_|True_|SmallInteger_} 4[088] - return S1 2 diff --git a/tests/type_propagation/gold/deltablue_test.gold b/tests/type_propagation/gold/deltablue_test.gold index 8508e0506..7c509e5ba 100644 --- a/tests/type_propagation/gold/deltablue_test.gold +++ b/tests/type_propagation/gold/deltablue_test.gold @@ -2,16 +2,16 @@ main tests/type_propagation/deltablue_test.toit 0[029] - load [block] in main tests/type_propagation/deltablue_test.toit 5[026] - load smi 10 7[038] - load block 1 - 9[058] - invoke virtual repeat // {Null_} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 13[089] - return null S2 0 [block] in main tests/type_propagation/deltablue_test.toit - argument 0: [block] 0[026] - load smi 50 - 2[053] - invoke static chain_test tests/type_propagation/deltablue_test.toit // {Null_} + 2[053] - invoke static chain_test tests/type_propagation/deltablue_test.toit // [{SmallInteger_}] -> {Null_} 5[041] - pop 1 6[026] - load smi 50 - 8[053] - invoke static projection_test tests/type_propagation/deltablue_test.toit // {Null_} + 8[053] - invoke static projection_test tests/type_propagation/deltablue_test.toit // [{SmallInteger_}] -> {Null_} 11[088] - return S1 1 Strength tests/type_propagation/deltablue_test.toit @@ -31,49 +31,49 @@ Strength tests/type_propagation/deltablue_test.toit Strength.value tests/type_propagation/deltablue_test.toit - argument 0: {Strength} - 0[009] - load field local 2 // {Null_|SmallInteger_} + 0[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 2[088] - return S1 1 Strength.next_weaker tests/type_propagation/deltablue_test.toit - argument 0: {Strength} - 0[009] - load field local 2 // {Null_|SmallInteger_} + 0[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 2[023] - load smi 0 - 3[062] - invoke eq // {True_|False_} + 3[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 4[082] - branch if false T14 7[033] - load global var lazy G6 // {Strength} 9[048] - as class Strength(47 - 48) // {True_} 11[088] - return S1 1 - 14[009] - load field local 2 // {Null_|SmallInteger_} + 14[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 16[025] - load smi 1 - 17[062] - invoke eq // {True_|False_} + 17[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 18[082] - branch if false T28 21[033] - load global var lazy G5 // {Strength} 23[048] - as class Strength(47 - 48) // {True_} 25[088] - return S1 1 - 28[009] - load field local 2 // {Null_|SmallInteger_} + 28[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 30[026] - load smi 2 - 32[062] - invoke eq // {True_|False_} + 32[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 33[082] - branch if false T43 36[033] - load global var lazy G4 // {Strength} 38[048] - as class Strength(47 - 48) // {True_} 40[088] - return S1 1 - 43[009] - load field local 2 // {Null_|SmallInteger_} + 43[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 45[026] - load smi 3 - 47[062] - invoke eq // {True_|False_} + 47[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 48[082] - branch if false T58 51[033] - load global var lazy G3 // {Strength} 53[048] - as class Strength(47 - 48) // {True_} 55[088] - return S1 1 - 58[009] - load field local 2 // {Null_|SmallInteger_} + 58[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 60[026] - load smi 4 - 62[062] - invoke eq // {True_|False_} + 62[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 63[082] - branch if false T73 66[033] - load global var lazy G2 // {Strength} 68[048] - as class Strength(47 - 48) // {True_} 70[088] - return S1 1 - 73[009] - load field local 2 // {Null_|SmallInteger_} + 73[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 75[026] - load smi 5 - 77[062] - invoke eq // {True_|False_} + 77[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 78[082] - branch if false T88 81[033] - load global var lazy G1 // {Strength} 83[048] - as class Strength(47 - 48) // {True_} @@ -85,49 +85,49 @@ REQUIRED tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[023] - load smi 0 3[020] - load literal required - 5[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 5[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 8[088] - return S1 0 STRONG_REFERRED tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[025] - load smi 1 3[020] - load literal strongPreferred - 5[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 5[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 8[088] - return S1 0 PREFERRED tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 2 4[020] - load literal preferred - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 STRONG_DEFAULT tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 3 4[020] - load literal strongDefault - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 NORMAL tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 4 4[020] - load literal normal - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 WEAK_DEFAULT tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 5 4[020] - load literal weakDefault - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 WEAKEST tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 6 4[020] - load literal weakest - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 stronger tests/type_propagation/deltablue_test.toit @@ -135,9 +135,9 @@ stronger tests/type_propagation/deltablue_test.toit - argument 1: {Null_|Strength} 0[052] - load local, as class, pop 3 - Strength(47 - 48) // {True_|False_} 2[052] - load local, as class, pop 2 - Strength(47 - 48) // {True_|False_} - 4[009] - load field local 3 // {Null_|SmallInteger_} - 6[009] - load field local 3 // {Null_|SmallInteger_} - 8[063] - invoke lt // {True_|False_} + 4[009] - load field local 3 // [{Strength}] -> {Null_|SmallInteger_} + 6[009] - load field local 3 // [{Strength}] -> {Null_|SmallInteger_} + 8[063] - invoke lt // [{Null_|SmallInteger_}, {Null_|SmallInteger_}] -> {True_|False_} 9[048] - as class True_(18 - 20) // {True_} 11[088] - return S1 2 @@ -146,9 +146,9 @@ weaker tests/type_propagation/deltablue_test.toit - argument 1: {Null_|Strength} 0[052] - load local, as class, pop 3 - Strength(47 - 48) // {True_|False_} 2[052] - load local, as class, pop 2 - Strength(47 - 48) // {True_|False_} - 4[009] - load field local 3 // {Null_|SmallInteger_} - 6[009] - load field local 3 // {Null_|SmallInteger_} - 8[064] - invoke gt // {True_|False_} + 4[009] - load field local 3 // [{Strength}] -> {Null_|SmallInteger_} + 6[009] - load field local 3 // [{Strength}] -> {Null_|SmallInteger_} + 8[064] - invoke gt // [{Null_|SmallInteger_}, {Null_|SmallInteger_}] -> {True_|False_} 9[048] - as class True_(18 - 20) // {True_} 11[088] - return S1 2 @@ -159,7 +159,7 @@ weakest tests/type_propagation/deltablue_test.toit 2[052] - load local, as class, pop 2 - Strength(47 - 48) // {True_|False_} 4[017] - load local 3 5[017] - load local 3 - 6[053] - invoke static weaker tests/type_propagation/deltablue_test.toit // {True_|False_} + 6[053] - invoke static weaker tests/type_propagation/deltablue_test.toit // [{Strength}, {Strength}] -> {True_|False_} 9[082] - branch if false T16 12[017] - load local 3 13[080] - branch T17 @@ -169,7 +169,7 @@ weakest tests/type_propagation/deltablue_test.toit Constraint.strength tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 0[009] - load field local 2 // {Null_|Strength} + 0[009] - load field local 2 // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|Strength} 2[088] - return S1 1 Constraint tests/type_propagation/deltablue_test.toit @@ -185,11 +185,11 @@ Constraint tests/type_propagation/deltablue_test.toit Constraint.add_constraint tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 0[016] - load local 2 - 1[058] - invoke virtual add_to_graph // {Null_} + 1[058] - invoke virtual add_to_graph // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 5[041] - pop 1 6[030] - load global var G7 // {Null_|Planner} 8[017] - load local 3 - 9[058] - invoke virtual incremental_add // {Null_} + 9[058] - invoke virtual incremental_add // [{Null_|Planner}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 13[089] - return null S1 1 Constraint.satisfy tests/type_propagation/deltablue_test.toit @@ -198,30 +198,30 @@ Constraint.satisfy tests/type_propagation/deltablue_test.toit 0[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} 2[017] - load local 3 3[017] - load local 3 - 4[058] - invoke virtual choose_method // {Null_} + 4[058] - invoke virtual choose_method // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_} 8[002] - pop, load local S3 - 10[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 10[060] - invoke virtual get is_satisfied // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|True_|False_} 13[081] - branch if true T36 - 16[009] - load field local 3 // {Null_|Strength} + 16[009] - load field local 3 // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|Strength} 18[033] - load global var lazy G0 // {Strength} - 20[062] - invoke eq // {True_|False_} + 20[062] - invoke eq // [{Null_|Strength}, {Strength}] -> {True_|False_} 21[082] - branch if false T30 24[020] - load literal Could not satisfy a required constraint! - 26[053] - invoke static throw /core/exceptions.toit // {} + 26[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 29[041] - pop 1 30[022] - load null 31[048] - as class EqualityConstraint?(43 - 47) // {True_} 33[088] - return S1 2 36[017] - load local 3 37[017] - load local 3 - 38[058] - invoke virtual mark_inputs // {Null_} + 38[058] - invoke virtual mark_inputs // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_} 42[002] - pop, load local S3 - 44[058] - invoke virtual output // {Null_|Variable} - 48[009] - load field local 32 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 44[058] - invoke virtual output // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|Variable} + 48[009] - load field local 32 // [{Null_|Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 50[014] - load local 0 51[082] - branch if false T60 54[014] - load local 0 - 55[058] - invoke virtual mark_unsatisfied // {Null_} + 55[058] - invoke virtual mark_unsatisfied // [{Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 59[041] - pop 1 60[015] - load local 1 61[000] - load local S6 @@ -229,10 +229,10 @@ Constraint.satisfy tests/type_propagation/deltablue_test.toit 65[030] - load global var G7 // {Null_|Planner} 67[000] - load local S6 69[000] - load local S6 - 71[058] - invoke virtual add_propagate // {True_|False_} + 71[058] - invoke virtual add_propagate // [{Null_|Planner}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 75[081] - branch if true T84 78[020] - load literal Cycle encountered - 80[053] - invoke static throw /core/exceptions.toit // {} + 80[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 83[041] - pop 1 84[015] - load local 1 85[019] - load local 5 @@ -244,14 +244,14 @@ Constraint.satisfy tests/type_propagation/deltablue_test.toit Constraint.destroy_constraint tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint} 0[016] - load local 2 - 1[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 1[060] - invoke virtual get is_satisfied // [{EditConstraint}] -> {Null_|True_|False_} 4[082] - branch if false T15 7[030] - load global var G7 // {Null_|Planner} 9[017] - load local 3 - 10[058] - invoke virtual incremental_remove // {Null_} + 10[058] - invoke virtual incremental_remove // [{Null_|Planner}, {EditConstraint}] -> {Null_} 14[041] - pop 1 15[016] - load local 2 - 16[058] - invoke virtual remove_from_graph // {Null_} + 16[058] - invoke virtual remove_from_graph // [{EditConstraint}] -> {Null_} 20[089] - return null S1 1 Constraint.is_input tests/type_propagation/deltablue_test.toit @@ -262,7 +262,7 @@ Constraint.is_input tests/type_propagation/deltablue_test.toit UnaryConstraint.is_satisfied tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 34 // {Null_|True_|False_} + 0[009] - load field local 34 // [{EditConstraint|StayConstraint}] -> {Null_|True_|False_} 2[088] - return S1 1 UnaryConstraint tests/type_propagation/deltablue_test.toit @@ -280,17 +280,17 @@ UnaryConstraint tests/type_propagation/deltablue_test.toit 13[013] - store field, pop 2 15[018] - load local 4 16[018] - load local 4 - 17[053] - invoke static Constraint tests/type_propagation/deltablue_test.toit // {EditConstraint|StayConstraint} + 17[053] - invoke static Constraint tests/type_propagation/deltablue_test.toit // [{EditConstraint|StayConstraint}, {Strength}] -> {EditConstraint|StayConstraint} 20[002] - pop, load local S4 - 22[053] - invoke static Constraint.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 22[053] - invoke static Constraint.add_constraint tests/type_propagation/deltablue_test.toit // [{EditConstraint|StayConstraint}] -> {Null_} 25[002] - pop, load local S4 27[088] - return S1 3 UnaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} 2[017] - load local 3 - 3[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 3[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EditConstraint|StayConstraint}] -> {Null_} 6[002] - pop, load local S2 8[020] - load literal false 10[048] - as class True_(18 - 20) // {True_} @@ -302,20 +302,20 @@ UnaryConstraint.choose_method tests/type_propagation/deltablue_test.toit - argument 1: {LargeInteger_|SmallInteger_} 0[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} 2[017] - load local 3 - 3[009] - load field local 20 // {Null_|Variable} - 5[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 3[009] - load field local 20 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} + 5[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 7[018] - load local 4 - 8[062] - invoke eq // {True_|False_} + 8[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 9[081] - branch if true T17 12[020] - load literal true 14[080] - branch T19 17[020] - load literal false 19[014] - load local 0 20[082] - branch if false T32 - 23[010] - pop, load field local 4 // {Null_|Strength} - 25[009] - load field local 21 // {Null_|Variable} - 27[007] - load field 4 // {Null_|Strength} - 29[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} + 23[010] - pop, load field local 4 // [{EditConstraint|StayConstraint}] -> {Null_|Strength} + 25[009] - load field local 21 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} + 27[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 29[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 32[048] - as class True_(18 - 20) // {True_} 34[013] - store field, pop 2 36[089] - return null S0 2 @@ -328,27 +328,27 @@ UnaryConstraint.mark_inputs tests/type_propagation/deltablue_test.toit UnaryConstraint.output tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} 2[088] - return S1 1 UnaryConstraint.recalculate tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 18 // {Null_|Variable} - 2[009] - load field local 3 // {Null_|Strength} + 0[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} + 2[009] - load field local 3 // [{EditConstraint|StayConstraint}] -> {Null_|Strength} 4[013] - store field, pop 4 - 6[009] - load field local 18 // {Null_|Variable} + 6[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} 8[017] - load local 3 - 9[058] - invoke virtual is_input // {True_|False_} + 9[058] - invoke virtual is_input // [{EditConstraint|StayConstraint}] -> {True_|False_} 13[081] - branch if true T21 16[020] - load literal true 18[080] - branch T23 21[020] - load literal false 23[013] - store field, pop 5 - 25[009] - load field local 18 // {Null_|Variable} - 27[007] - load field 5 // {Null_|True_|False_} + 25[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} + 27[007] - load field 5 // [{Null_|Variable}] -> {Null_|True_|False_} 29[082] - branch if false T38 32[016] - load local 2 - 33[058] - invoke virtual execute // {Null_} + 33[058] - invoke virtual execute // [{EditConstraint|StayConstraint}] -> {Null_} 37[041] - pop 1 38[089] - return null S0 1 @@ -370,9 +370,9 @@ UnaryConstraint.inputs_known tests/type_propagation/deltablue_test.toit UnaryConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} 2[017] - load local 3 - 3[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 3[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EditConstraint|StayConstraint}] -> {Null_} 6[002] - pop, load local S2 8[020] - load literal false 10[048] - as class True_(18 - 20) // {True_} @@ -388,7 +388,7 @@ StayConstraint tests/type_propagation/deltablue_test.toit 4[018] - load local 4 5[018] - load local 4 6[018] - load local 4 - 7[053] - invoke static UnaryConstraint tests/type_propagation/deltablue_test.toit // {StayConstraint} + 7[053] - invoke static UnaryConstraint tests/type_propagation/deltablue_test.toit // [{StayConstraint}, {Strength}, {Variable}] -> {StayConstraint} 10[002] - pop, load local S4 12[088] - return S1 3 @@ -405,7 +405,7 @@ EditConstraint tests/type_propagation/deltablue_test.toit 4[018] - load local 4 5[018] - load local 4 6[018] - load local 4 - 7[053] - invoke static UnaryConstraint tests/type_propagation/deltablue_test.toit // {EditConstraint} + 7[053] - invoke static UnaryConstraint tests/type_propagation/deltablue_test.toit // [{EditConstraint}, {Strength}, {Variable}] -> {EditConstraint} 10[002] - pop, load local S4 12[088] - return S1 3 @@ -439,9 +439,9 @@ BinaryConstraint tests/type_propagation/deltablue_test.toit 18[013] - store field, pop 3 20[019] - load local 5 21[019] - load local 5 - 22[053] - invoke static Constraint tests/type_propagation/deltablue_test.toit // {EqualityConstraint|ScaleConstraint} + 22[053] - invoke static Constraint tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint}, {Strength}] -> {EqualityConstraint|ScaleConstraint} 25[002] - pop, load local S5 - 27[053] - invoke static Constraint.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 27[053] - invoke static Constraint.add_constraint tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint}] -> {Null_} 30[002] - pop, load local S5 32[088] - return S1 4 @@ -449,62 +449,62 @@ BinaryConstraint.choose_method tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - argument 1: {LargeInteger_|SmallInteger_} 0[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} - 2[009] - load field local 19 // {Null_|Variable} - 4[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 2[009] - load field local 19 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 4[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 6[017] - load local 3 - 7[062] - invoke eq // {True_|False_} + 7[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 8[082] - branch if false T44 11[017] - load local 3 12[025] - load smi 1 - 13[009] - load field local 37 // {Null_|Variable} - 15[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 13[009] - load field local 37 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 15[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 17[019] - load local 5 - 18[062] - invoke eq // {True_|False_} + 18[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 19[081] - branch if true T37 - 22[009] - load field local 5 // {Null_|Strength} - 24[009] - load field local 38 // {Null_|Variable} - 26[007] - load field 4 // {Null_|Strength} - 28[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} + 22[009] - load field local 5 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Strength} + 24[009] - load field local 38 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 26[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 28[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 31[082] - branch if false T37 34[041] - pop 1 35[026] - load smi 2 37[048] - as class LargeInteger_(22 - 24) // {True_} 39[013] - store field, pop 3 41[080] - branch T143 - 44[009] - load field local 35 // {Null_|Variable} - 46[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 44[009] - load field local 35 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 46[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 48[017] - load local 3 - 49[062] - invoke eq // {True_|False_} + 49[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 50[082] - branch if false T85 53[017] - load local 3 54[025] - load smi 1 - 55[009] - load field local 21 // {Null_|Variable} - 57[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 55[009] - load field local 21 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 57[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 59[019] - load local 5 - 60[062] - invoke eq // {True_|False_} + 60[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 61[081] - branch if true T78 - 64[009] - load field local 5 // {Null_|Strength} - 66[009] - load field local 22 // {Null_|Variable} - 68[007] - load field 4 // {Null_|Strength} - 70[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} + 64[009] - load field local 5 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Strength} + 66[009] - load field local 22 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 68[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 70[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 73[082] - branch if false T78 76[041] - pop 1 77[023] - load smi 0 78[048] - as class LargeInteger_(22 - 24) // {True_} 80[013] - store field, pop 3 82[080] - branch T143 - 85[009] - load field local 19 // {Null_|Variable} - 87[007] - load field 4 // {Null_|Strength} - 89[009] - load field local 36 // {Null_|Variable} - 91[007] - load field 4 // {Null_|Strength} - 93[053] - invoke static weaker tests/type_propagation/deltablue_test.toit // {True_|False_} + 85[009] - load field local 19 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 87[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 89[009] - load field local 36 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 91[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 93[053] - invoke static weaker tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 96[082] - branch if false T122 99[017] - load local 3 100[025] - load smi 1 -101[009] - load field local 5 // {Null_|Strength} -103[009] - load field local 22 // {Null_|Variable} -105[007] - load field 4 // {Null_|Strength} -107[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} +101[009] - load field local 5 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Strength} +103[009] - load field local 22 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} +105[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} +107[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 110[082] - branch if false T115 113[041] - pop 1 114[023] - load smi 0 @@ -513,10 +513,10 @@ BinaryConstraint.choose_method tests/type_propagation/deltablue_test.toit 119[080] - branch T143 122[017] - load local 3 123[023] - load smi 0 -124[009] - load field local 5 // {Null_|Strength} -126[009] - load field local 38 // {Null_|Variable} -128[007] - load field 4 // {Null_|Strength} -130[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} +124[009] - load field local 5 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Strength} +126[009] - load field local 38 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} +128[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} +130[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 133[082] - branch if false T139 136[041] - pop 1 137[026] - load smi 2 @@ -526,12 +526,12 @@ BinaryConstraint.choose_method tests/type_propagation/deltablue_test.toit BinaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 2[017] - load local 3 - 3[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} - 6[010] - pop, load field local 34 // {Null_|Variable} + 3[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EqualityConstraint|ScaleConstraint}] -> {Null_} + 6[010] - pop, load field local 34 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 8[017] - load local 3 - 9[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 9[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EqualityConstraint|ScaleConstraint}] -> {Null_} 12[002] - pop, load local S2 14[025] - load smi 1 15[048] - as class LargeInteger_(22 - 24) // {True_} @@ -540,9 +540,9 @@ BinaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit BinaryConstraint.is_satisfied tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 50 // {Null_|SmallInteger_} + 0[009] - load field local 50 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|SmallInteger_} 2[025] - load smi 1 - 3[062] - invoke eq // {True_|False_} + 3[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 4[081] - branch if true T12 7[020] - load literal true 9[080] - branch T14 @@ -555,53 +555,53 @@ BinaryConstraint.mark_inputs tests/type_propagation/deltablue_test.toit - argument 1: {LargeInteger_|SmallInteger_} 0[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} 2[017] - load local 3 - 3[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} + 3[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint}] -> {Variable} 6[017] - load local 3 7[013] - store field, pop 3 9[089] - return null S0 2 BinaryConstraint.input tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 50 // {Null_|SmallInteger_} + 0[009] - load field local 50 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|SmallInteger_} 2[026] - load smi 2 - 4[062] - invoke eq // {True_|False_} + 4[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 5[082] - branch if false T13 - 8[009] - load field local 18 // {Null_|Variable} + 8[009] - load field local 18 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 10[080] - branch T15 - 13[009] - load field local 34 // {Null_|Variable} + 13[009] - load field local 34 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 15[048] - as class Variable(42 - 43) // {True_|False_} 17[088] - return S1 1 BinaryConstraint.output tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 50 // {Null_|SmallInteger_} + 0[009] - load field local 50 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|SmallInteger_} 2[026] - load smi 2 - 4[062] - invoke eq // {True_|False_} + 4[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 5[082] - branch if false T13 - 8[009] - load field local 34 // {Null_|Variable} + 8[009] - load field local 34 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 10[080] - branch T15 - 13[009] - load field local 18 // {Null_|Variable} + 13[009] - load field local 18 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 15[048] - as class Variable(42 - 43) // {True_|False_} 17[088] - return S1 1 BinaryConstraint.recalculate tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} + 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}] -> {Variable} 4[017] - load local 3 - 5[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // {Variable} + 5[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}] -> {Variable} 8[014] - load local 0 - 9[009] - load field local 5 // {Null_|Strength} - 11[009] - load field local 67 // {Null_|Strength} - 13[053] - invoke static weakest tests/type_propagation/deltablue_test.toit // {Strength} + 9[009] - load field local 5 // [{EqualityConstraint}] -> {Null_|Strength} + 11[009] - load field local 67 // [{Variable}] -> {Null_|Strength} + 13[053] - invoke static weakest tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {Strength} 16[013] - store field, pop 4 18[014] - load local 0 - 19[009] - load field local 82 // {Null_|True_|False_} + 19[009] - load field local 82 // [{Variable}] -> {Null_|True_|False_} 21[013] - store field, pop 5 - 23[009] - load field local 80 // {Null_|True_|False_} + 23[009] - load field local 80 // [{Variable}] -> {Null_|True_|False_} 25[082] - branch if false T34 28[018] - load local 4 - 29[058] - invoke virtual execute // {Null_} + 29[058] - invoke virtual execute // [{EqualityConstraint}] -> {Null_} 33[041] - pop 1 34[089] - return null S2 1 @@ -618,27 +618,27 @@ BinaryConstraint.inputs_known tests/type_propagation/deltablue_test.toit - argument 1: {LargeInteger_|SmallInteger_} 0[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} 2[017] - load local 3 - 3[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} - 6[009] - load field local 48 // {Null_|LargeInteger_|SmallInteger_} + 3[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint}] -> {Variable} + 6[009] - load field local 48 // [{Variable}] -> {Null_|LargeInteger_|SmallInteger_} 8[018] - load local 4 - 9[062] - invoke eq // {True_|False_} + 9[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 10[014] - load local 0 11[081] - branch if true T22 - 14[010] - pop, load field local 80 // {Null_|True_|False_} + 14[010] - pop, load field local 80 // [{Variable}] -> {Null_|True_|False_} 16[014] - load local 0 17[081] - branch if true T22 - 20[010] - pop, load field local 32 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 20[010] - pop, load field local 32 // [{Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 22[048] - as class True_(18 - 20) // {True_|False_} 24[088] - return S2 2 BinaryConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 2[017] - load local 3 - 3[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} - 6[010] - pop, load field local 34 // {Null_|Variable} + 3[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EqualityConstraint|ScaleConstraint}] -> {Null_} + 6[010] - pop, load field local 34 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 8[017] - load local 3 - 9[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 9[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EqualityConstraint|ScaleConstraint}] -> {Null_} 12[002] - pop, load local S2 14[025] - load smi 1 15[048] - as class LargeInteger_(22 - 24) // {True_} @@ -667,32 +667,32 @@ ScaleConstraint tests/type_propagation/deltablue_test.toit 22[000] - load local S7 24[000] - load local S7 26[000] - load local S7 - 28[053] - invoke static BinaryConstraint tests/type_propagation/deltablue_test.toit // {ScaleConstraint} + 28[053] - invoke static BinaryConstraint tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}, {Strength}, {Variable}, {Variable}] -> {ScaleConstraint} 31[002] - pop, load local S7 33[088] - return S1 6 ScaleConstraint.add_to_graph tests/type_propagation/deltablue_test.toit - argument 0: {ScaleConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit // {Null_} - 4[010] - pop, load field local 66 // {Null_|Variable} + 1[053] - invoke static BinaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Null_} + 4[010] - pop, load field local 66 // [{ScaleConstraint}] -> {Null_|Variable} 6[017] - load local 3 - 7[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} - 10[010] - pop, load field local 82 // {Null_|Variable} + 7[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {ScaleConstraint}] -> {Null_} + 10[010] - pop, load field local 82 // [{ScaleConstraint}] -> {Null_|Variable} 12[017] - load local 3 - 13[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 13[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {ScaleConstraint}] -> {Null_} 16[089] - return null S1 1 ScaleConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit - argument 0: {ScaleConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit // {Null_} - 4[010] - pop, load field local 66 // {Null_|Variable} + 1[053] - invoke static BinaryConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Null_} + 4[010] - pop, load field local 66 // [{ScaleConstraint}] -> {Null_|Variable} 6[017] - load local 3 - 7[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} - 10[010] - pop, load field local 82 // {Null_|Variable} + 7[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {ScaleConstraint}] -> {Null_} + 10[010] - pop, load field local 82 // [{ScaleConstraint}] -> {Null_|Variable} 12[017] - load local 3 - 13[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 13[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {ScaleConstraint}] -> {Null_} 16[089] - return null S1 1 ScaleConstraint.mark_inputs tests/type_propagation/deltablue_test.toit @@ -701,9 +701,9 @@ ScaleConstraint.mark_inputs tests/type_propagation/deltablue_test.toit 0[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} 2[017] - load local 3 3[017] - load local 3 - 4[053] - invoke static BinaryConstraint.mark_inputs tests/type_propagation/deltablue_test.toit // {Null_} - 7[010] - pop, load field local 67 // {Null_|Variable} - 9[009] - load field local 84 // {Null_|Variable} + 4[053] - invoke static BinaryConstraint.mark_inputs tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_} + 7[010] - pop, load field local 67 // [{ScaleConstraint}] -> {Null_|Variable} + 9[009] - load field local 84 // [{ScaleConstraint}] -> {Null_|Variable} 11[018] - load local 4 12[011] - store field 3 14[013] - store field, pop 3 @@ -711,31 +711,31 @@ ScaleConstraint.mark_inputs tests/type_propagation/deltablue_test.toit ScaleConstraint.execute tests/type_propagation/deltablue_test.toit - argument 0: {ScaleConstraint} - 0[009] - load field local 50 // {Null_|SmallInteger_} + 0[009] - load field local 50 // [{ScaleConstraint}] -> {Null_|SmallInteger_} 2[026] - load smi 2 - 4[062] - invoke eq // {True_|False_} + 4[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 5[082] - branch if false T31 - 8[009] - load field local 34 // {Null_|Variable} - 10[009] - load field local 19 // {Null_|Variable} - 12[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 14[009] - load field local 68 // {Null_|Variable} - 16[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 18[075] - invoke mul // {LargeInteger_|SmallInteger_} - 19[009] - load field local 84 // {Null_|Variable} - 21[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 23[073] - invoke add // {LargeInteger_|SmallInteger_} + 8[009] - load field local 34 // [{ScaleConstraint}] -> {Null_|Variable} + 10[009] - load field local 19 // [{ScaleConstraint}] -> {Null_|Variable} + 12[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 14[009] - load field local 68 // [{ScaleConstraint}] -> {Null_|Variable} + 16[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 18[075] - invoke mul // [{Null_|LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} + 19[009] - load field local 84 // [{ScaleConstraint}] -> {Null_|Variable} + 21[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 23[073] - invoke add // [{LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 24[048] - as class LargeInteger_(22 - 24) // {True_} 26[013] - store field, pop 1 28[080] - branch T51 - 31[009] - load field local 18 // {Null_|Variable} - 33[009] - load field local 35 // {Null_|Variable} - 35[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 37[009] - load field local 84 // {Null_|Variable} - 39[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 41[074] - invoke sub // {LargeInteger_|SmallInteger_} - 42[009] - load field local 68 // {Null_|Variable} - 44[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 46[076] - invoke div // {LargeInteger_|SmallInteger_} + 31[009] - load field local 18 // [{ScaleConstraint}] -> {Null_|Variable} + 33[009] - load field local 35 // [{ScaleConstraint}] -> {Null_|Variable} + 35[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 37[009] - load field local 84 // [{ScaleConstraint}] -> {Null_|Variable} + 39[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 41[074] - invoke sub // [{Null_|LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} + 42[009] - load field local 68 // [{ScaleConstraint}] -> {Null_|Variable} + 44[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 46[076] - invoke div // [{LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 47[048] - as class LargeInteger_(22 - 24) // {True_} 49[013] - store field, pop 1 51[089] - return null S0 1 @@ -743,29 +743,29 @@ ScaleConstraint.execute tests/type_propagation/deltablue_test.toit ScaleConstraint.recalculate tests/type_propagation/deltablue_test.toit - argument 0: {ScaleConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} + 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Variable} 4[017] - load local 3 - 5[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // {Variable} + 5[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Variable} 8[014] - load local 0 - 9[009] - load field local 5 // {Null_|Strength} - 11[009] - load field local 67 // {Null_|Strength} - 13[053] - invoke static weakest tests/type_propagation/deltablue_test.toit // {Strength} + 9[009] - load field local 5 // [{ScaleConstraint}] -> {Null_|Strength} + 11[009] - load field local 67 // [{Variable}] -> {Null_|Strength} + 13[053] - invoke static weakest tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {Strength} 16[013] - store field, pop 4 18[014] - load local 0 - 19[009] - load field local 82 // {Null_|True_|False_} + 19[009] - load field local 82 // [{Variable}] -> {Null_|True_|False_} 21[014] - load local 0 22[082] - branch if false T37 - 25[010] - pop, load field local 69 // {Null_|Variable} - 27[007] - load field 5 // {Null_|True_|False_} + 25[010] - pop, load field local 69 // [{ScaleConstraint}] -> {Null_|Variable} + 27[007] - load field 5 // [{Null_|Variable}] -> {Null_|True_|False_} 29[014] - load local 0 30[082] - branch if false T37 - 33[010] - pop, load field local 85 // {Null_|Variable} - 35[007] - load field 5 // {Null_|True_|False_} + 33[010] - pop, load field local 85 // [{ScaleConstraint}] -> {Null_|Variable} + 35[007] - load field 5 // [{Null_|Variable}] -> {Null_|True_|False_} 37[013] - store field, pop 5 - 39[009] - load field local 80 // {Null_|True_|False_} + 39[009] - load field local 80 // [{Variable}] -> {Null_|True_|False_} 41[082] - branch if false T49 44[018] - load local 4 - 45[053] - invoke static ScaleConstraint.execute tests/type_propagation/deltablue_test.toit // {Null_} + 45[053] - invoke static ScaleConstraint.execute tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Null_} 48[041] - pop 1 49[089] - return null S2 1 @@ -781,17 +781,17 @@ EqualityConstraint tests/type_propagation/deltablue_test.toit 7[019] - load local 5 8[019] - load local 5 9[019] - load local 5 - 10[053] - invoke static BinaryConstraint tests/type_propagation/deltablue_test.toit // {EqualityConstraint} + 10[053] - invoke static BinaryConstraint tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}, {Strength}, {Variable}, {Variable}] -> {EqualityConstraint} 13[002] - pop, load local S5 15[088] - return S1 4 EqualityConstraint.execute tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // {Variable} + 1[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}] -> {Variable} 4[017] - load local 3 - 5[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} - 8[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} + 5[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}] -> {Variable} + 8[007] - load field 1 // [{Variable}] -> {Null_|LargeInteger_|SmallInteger_} 10[013] - store field, pop 1 12[089] - return null S0 1 @@ -819,17 +819,17 @@ Variable tests/type_propagation/deltablue_test.toit 26[018] - load local 4 27[023] - load smi 0 28[022] - load null - 29[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 29[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 32[014] - load local 0 33[004] - store local, pop S1 - 35[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 35[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 38[013] - store field, pop 6 40[018] - load local 4 41[088] - return S1 3 Variable.value tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - 0[009] - load field local 18 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 18 // [{Variable}] -> {Null_|LargeInteger_|SmallInteger_} 2[088] - return S1 1 Variable.value= tests/type_propagation/deltablue_test.toit @@ -843,12 +843,12 @@ Variable.value= tests/type_propagation/deltablue_test.toit Variable.determined_by tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - 0[009] - load field local 34 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 0[009] - load field local 34 // [{Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 2[088] - return S1 1 Variable.mark tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - 0[009] - load field local 50 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 50 // [{Variable}] -> {Null_|LargeInteger_|SmallInteger_} 2[088] - return S1 1 Variable.mark= tests/type_propagation/deltablue_test.toit @@ -861,32 +861,32 @@ Variable.mark= tests/type_propagation/deltablue_test.toit Variable.constraints tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - 0[009] - load field local 98 // {Null_|List_} + 0[009] - load field local 98 // [{Variable}] -> {Null_|List_} 2[088] - return S1 1 Variable.add_constraint tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - argument 1: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 0[052] - load local, as class, pop 2 - EqualityConstraint(43 - 47) // {True_} - 2[009] - load field local 99 // {Null_|List_} + 2[009] - load field local 99 // [{Variable}] -> {Null_|List_} 4[017] - load local 3 - 5[058] - invoke virtual add // {Null_} + 5[058] - invoke virtual add // [{Null_|List_}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 9[089] - return null S1 2 Variable.remove_constraint tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - argument 1: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 0[052] - load local, as class, pop 2 - EqualityConstraint(43 - 47) // {True_} - 2[009] - load field local 99 // {Null_|List_} + 2[009] - load field local 99 // [{Variable}] -> {Null_|List_} 4[029] - load [block] in Variable.remove_constraint tests/type_propagation/deltablue_test.toit 9[015] - load local 1 10[038] - load block 1 12[020] - load literal true - 14[058] - invoke virtual filter // {List_} + 14[058] - invoke virtual filter // [{Null_|List_}, [block], {True_}] -> {List_} 18[040] - pop 3 - 20[009] - load field local 35 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 20[009] - load field local 35 // [{Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 22[017] - load local 3 - 23[062] - invoke eq // {True_|False_} + 23[062] - invoke eq // [{Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {True_|False_} 24[082] - branch if false T31 27[017] - load local 3 28[022] - load null @@ -899,7 +899,7 @@ Variable.remove_constraint tests/type_propagation/deltablue_test.toit 0[016] - load local 2 1[018] - load local 4 2[005] - load outer S4 // {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 4[062] - invoke eq // {True_|False_} + 4[062] - invoke eq // [{*}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {True_|False_} 5[081] - branch if true T13 8[020] - load literal true 10[080] - branch T15 @@ -919,15 +919,15 @@ Planner.incremental_add tests/type_propagation/deltablue_test.toit - argument 1: {*} 0[052] - load local, as class, pop 2 - EqualityConstraint(43 - 47) // {True_|False_} 2[017] - load local 3 - 3[053] - invoke static Planner.new_mark tests/type_propagation/deltablue_test.toit // {LargeInteger_|SmallInteger_} + 3[053] - invoke static Planner.new_mark tests/type_propagation/deltablue_test.toit // [{Planner}] -> {LargeInteger_|SmallInteger_} 6[017] - load local 3 7[015] - load local 1 - 8[053] - invoke static Constraint.satisfy tests/type_propagation/deltablue_test.toit // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 8[053] - invoke static Constraint.satisfy tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 11[014] - load local 0 12[082] - branch if false T28 15[014] - load local 0 16[016] - load local 2 - 17[058] - invoke virtual satisfy // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 17[058] - invoke virtual satisfy // [{Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 21[004] - store local, pop S1 23[083] - branch back T11 28[089] - return null S2 2 @@ -937,26 +937,26 @@ Planner.incremental_remove tests/type_propagation/deltablue_test.toit - argument 1: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 0[052] - load local, as class, pop 2 - EqualityConstraint(43 - 47) // {True_} 2[016] - load local 2 - 3[058] - invoke virtual output // {Null_|Variable} + 3[058] - invoke virtual output // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|Variable} 7[017] - load local 3 - 8[058] - invoke virtual mark_unsatisfied // {Null_} + 8[058] - invoke virtual mark_unsatisfied // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 12[002] - pop, load local S3 - 14[058] - invoke virtual remove_from_graph // {Null_} + 14[058] - invoke virtual remove_from_graph // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 18[002] - pop, load local S4 20[015] - load local 1 - 21[053] - invoke static Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit // {List_} + 21[053] - invoke static Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit // [{Planner}, {Null_|Variable}] -> {List_} 24[033] - load global var lazy G0 // {Strength} 26[029] - load [block] in Planner.incremental_remove tests/type_propagation/deltablue_test.toit 31[016] - load local 2 32[038] - load block 1 - 34[058] - invoke virtual do // {Null_} + 34[058] - invoke virtual do // [{List_}, [block]] -> {Null_} 38[041] - pop 1 39[002] - pop, load local S0 - 41[058] - invoke virtual next_weaker // {Strength} + 41[058] - invoke virtual next_weaker // [{Strength}] -> {Strength} 45[004] - store local, pop S1 47[014] - load local 0 48[033] - load global var lazy G6 // {Strength} - 50[062] - invoke eq // {True_|False_} + 50[062] - invoke eq // [{Strength}, {Strength}] -> {True_|False_} 51[082] - branch if false T57 54[080] - branch T62 57[083] - branch back T26 @@ -967,23 +967,23 @@ Planner.incremental_remove tests/type_propagation/deltablue_test.toit - argument 1: {*} 0[022] - load null 1[017] - load local 3 - 2[060] - invoke virtual get strength // {Null_|Strength} + 2[060] - invoke virtual get strength // [{*}] -> {Null_|Strength} 5[019] - load local 5 6[005] - load outer S1 // {Strength} - 8[062] - invoke eq // {True_|False_} + 8[062] - invoke eq // [{Null_|Strength}, {Strength}] -> {True_|False_} 9[082] - branch if false T20 12[002] - pop, load local S3 14[005] - load outer S7 // {Planner} 16[017] - load local 3 - 17[053] - invoke static Planner.incremental_add tests/type_propagation/deltablue_test.toit // {Null_} + 17[053] - invoke static Planner.incremental_add tests/type_propagation/deltablue_test.toit // [{Planner}, {*}] -> {Null_} 20[088] - return S1 2 Planner.new_mark tests/type_propagation/deltablue_test.toit - argument 0: {Planner} 0[016] - load local 2 - 1[009] - load field local 3 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 3 // [{Planner}] -> {Null_|LargeInteger_|SmallInteger_} 3[025] - load smi 1 - 4[073] - invoke add // {LargeInteger_|SmallInteger_} + 4[073] - invoke add // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[011] - store field 0 7[048] - as class LargeInteger_(22 - 24) // {True_} 9[088] - return S1 1 @@ -993,37 +993,37 @@ Planner.make_plan tests/type_propagation/deltablue_test.toit - argument 1: {List_} 0[052] - load local, as class, pop 2 - List_(36 - 40) // {True_} 2[017] - load local 3 - 3[053] - invoke static Planner.new_mark tests/type_propagation/deltablue_test.toit // {LargeInteger_|SmallInteger_} + 3[053] - invoke static Planner.new_mark tests/type_propagation/deltablue_test.toit // [{Planner}] -> {LargeInteger_|SmallInteger_} 6[042] - allocate instance Plan - 8[053] - invoke static Plan tests/type_propagation/deltablue_test.toit // {Plan} + 8[053] - invoke static Plan tests/type_propagation/deltablue_test.toit // [{Plan}] -> {Plan} 11[018] - load local 4 12[014] - load local 0 - 13[053] - invoke static CollectionBase.is_empty /core/collections.toit // {True_|False_} + 13[053] - invoke static CollectionBase.is_empty /core/collections.toit // [{List_}] -> {True_|False_} 16[081] - branch if true T79 19[014] - load local 0 - 20[058] - invoke virtual remove_last // {*} + 20[058] - invoke virtual remove_last // [{List_}] -> {*} 24[014] - load local 0 - 25[058] - invoke virtual output // {Null_|Variable} - 29[060] - invoke virtual get mark // {Null_|LargeInteger_|SmallInteger_} + 25[058] - invoke virtual output // [{*}] -> {Null_|Variable} + 29[060] - invoke virtual get mark // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 32[018] - load local 4 - 33[062] - invoke eq // {True_|False_} + 33[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 34[081] - branch if true T73 37[014] - load local 0 38[018] - load local 4 - 39[058] - invoke virtual inputs_known // {True_|False_} + 39[058] - invoke virtual inputs_known // [{*}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 43[082] - branch if false T73 46[016] - load local 2 47[015] - load local 1 - 48[053] - invoke static Plan.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 48[053] - invoke static Plan.add_constraint tests/type_propagation/deltablue_test.toit // [{Plan}, {*}] -> {Null_} 51[002] - pop, load local S0 - 53[058] - invoke virtual output // {Null_|Variable} + 53[058] - invoke virtual output // [{*}] -> {Null_|Variable} 57[018] - load local 4 - 58[061] - invoke virtual set mark // {LargeInteger_|SmallInteger_} + 58[061] - invoke virtual set mark // [{Null_|Variable}, {LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 61[002] - pop, load local S7 63[015] - load local 1 - 64[058] - invoke virtual output // {Null_|Variable} + 64[058] - invoke virtual output // [{*}] -> {Null_|Variable} 68[017] - load local 3 - 69[053] - invoke static Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit // {Null_} + 69[053] - invoke static Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit // [{Planner}, {Null_|Variable}, {List_}] -> {Null_} 72[041] - pop 1 73[041] - pop 1 74[083] - branch back T12 @@ -1036,18 +1036,18 @@ Planner.extract_plan_from_constraints tests/type_propagation/deltablue_test.toit 0[052] - load local, as class, pop 2 - List_(36 - 40) // {True_} 2[023] - load smi 0 3[022] - load null - 4[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 4[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 7[014] - load local 0 8[004] - store local, pop S1 - 10[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 10[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 13[029] - load [block] in Planner.extract_plan_from_constraints tests/type_propagation/deltablue_test.toit 18[018] - load local 4 19[038] - load block 1 - 21[058] - invoke virtual do // {Null_} + 21[058] - invoke virtual do // [{List_}, [block]] -> {Null_} 25[041] - pop 1 26[002] - pop, load local S4 28[015] - load local 1 - 29[053] - invoke static Planner.make_plan tests/type_propagation/deltablue_test.toit // {Plan} + 29[053] - invoke static Planner.make_plan tests/type_propagation/deltablue_test.toit // [{Planner}, {List_}] -> {Plan} 32[088] - return S2 2 [block] in Planner.extract_plan_from_constraints tests/type_propagation/deltablue_test.toit @@ -1055,15 +1055,15 @@ Planner.extract_plan_from_constraints tests/type_propagation/deltablue_test.toit - argument 1: {*} 0[022] - load null 1[017] - load local 3 - 2[058] - invoke virtual is_input // {True_|False_} + 2[058] - invoke virtual is_input // [{*}] -> {True_|False_} 6[082] - branch if false T24 9[017] - load local 3 - 10[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 10[060] - invoke virtual get is_satisfied // [{*}] -> {Null_|True_|False_} 13[082] - branch if false T24 16[002] - pop, load local S3 18[005] - load outer S1 // {List_} 20[017] - load local 3 - 21[053] - invoke static List.add /core/collections.toit // {Null_} + 21[053] - invoke static List.add /core/collections.toit // [{List_}, {*}] -> {Null_} 24[088] - return S1 2 Planner.add_propagate tests/type_propagation/deltablue_test.toit @@ -1073,33 +1073,33 @@ Planner.add_propagate tests/type_propagation/deltablue_test.toit 0[052] - load local, as class, pop 3 - EqualityConstraint(43 - 47) // {True_} 2[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} 4[017] - load local 3 - 5[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} - 8[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 5[053] - invoke static create_array_ /core/collections.toit // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {LargeArray_|SmallArray_} + 8[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 11[014] - load local 0 - 12[053] - invoke static CollectionBase.is_empty /core/collections.toit // {True_|False_} + 12[053] - invoke static CollectionBase.is_empty /core/collections.toit // [{List_}] -> {True_|False_} 15[081] - branch if true T74 18[014] - load local 0 - 19[058] - invoke virtual remove_last // {*} + 19[058] - invoke virtual remove_last // [{List_}] -> {*} 23[014] - load local 0 - 24[058] - invoke virtual output // {Null_|Variable} - 28[060] - invoke virtual get mark // {Null_|LargeInteger_|SmallInteger_} + 24[058] - invoke virtual output // [{*}] -> {Null_|Variable} + 28[060] - invoke virtual get mark // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 31[019] - load local 5 - 32[062] - invoke eq // {True_|False_} + 32[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 33[082] - branch if false T51 36[000] - load local S6 38[000] - load local S6 - 40[053] - invoke static Planner.incremental_remove tests/type_propagation/deltablue_test.toit // {Null_} + 40[053] - invoke static Planner.incremental_remove tests/type_propagation/deltablue_test.toit // [{Planner}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 43[041] - pop 1 44[020] - load literal false 46[048] - as class True_(18 - 20) // {True_} 48[088] - return S3 3 51[014] - load local 0 - 52[058] - invoke virtual recalculate // {Null_} + 52[058] - invoke virtual recalculate // [{*}] -> {Null_} 56[002] - pop, load local S6 58[015] - load local 1 - 59[058] - invoke virtual output // {Null_|Variable} + 59[058] - invoke virtual output // [{*}] -> {Null_|Variable} 63[017] - load local 3 - 64[053] - invoke static Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit // {Null_} + 64[053] - invoke static Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit // [{Planner}, {Null_|Variable}, {List_}] -> {Null_} 67[040] - pop 2 69[083] - branch back T11 74[020] - load literal true @@ -1121,31 +1121,31 @@ Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit 14[013] - store field, pop 5 16[023] - load smi 0 17[022] - load null - 18[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 18[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 21[014] - load local 0 22[004] - store local, pop S1 - 24[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 24[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 27[017] - load local 3 - 28[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} - 31[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 28[053] - invoke static create_array_ /core/collections.toit // [{Variable}] -> {LargeArray_|SmallArray_} + 31[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 34[014] - load local 0 - 35[053] - invoke static CollectionBase.is_empty /core/collections.toit // {True_|False_} + 35[053] - invoke static CollectionBase.is_empty /core/collections.toit // [{List_}] -> {True_|False_} 38[081] - branch if true T89 41[014] - load local 0 - 42[058] - invoke virtual remove_last // {*} + 42[058] - invoke virtual remove_last // [{List_}] -> {*} 46[029] - load [block] in Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit 51[015] - load local 1 - 52[060] - invoke virtual get constraints // {Null_|List_} + 52[060] - invoke virtual get constraints // [{*}] -> {Null_|List_} 55[038] - load block 1 - 57[058] - invoke virtual do // {Null_} + 57[058] - invoke virtual do // [{Null_|List_}, [block]] -> {Null_} 61[041] - pop 1 62[002] - pop, load local S0 - 64[060] - invoke virtual get determined_by // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 64[060] - invoke virtual get determined_by // [{*}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 67[029] - load [block] in Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit 72[016] - load local 2 - 73[060] - invoke virtual get constraints // {Null_|List_} + 73[060] - invoke virtual get constraints // [{*}] -> {Null_|List_} 76[038] - load block 1 - 78[058] - invoke virtual do // {Null_} + 78[058] - invoke virtual do // [{Null_|List_}, [block]] -> {Null_} 82[040] - pop 4 84[083] - branch back T34 89[015] - load local 1 @@ -1156,12 +1156,12 @@ Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit - argument 1: {*} 0[022] - load null 1[017] - load local 3 - 2[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 2[060] - invoke virtual get is_satisfied // [{*}] -> {Null_|True_|False_} 5[081] - branch if true T16 8[002] - pop, load local S3 10[005] - load outer S3 // {List_} 12[017] - load local 3 - 13[053] - invoke static List.add /core/collections.toit // {Null_} + 13[053] - invoke static List.add /core/collections.toit // [{List_}, {*}] -> {Null_} 16[088] - return S1 2 [block] in Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit @@ -1171,18 +1171,18 @@ Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit 1[017] - load local 3 2[019] - load local 5 3[005] - load outer S1 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{*}, {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {True_|False_} 6[081] - branch if true T34 9[017] - load local 3 - 10[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 10[060] - invoke virtual get is_satisfied // [{*}] -> {Null_|True_|False_} 13[082] - branch if false T34 16[002] - pop, load local S2 - 18[058] - invoke virtual recalculate // {Null_} + 18[058] - invoke virtual recalculate // [{*}] -> {Null_} 22[002] - pop, load local S3 24[005] - load outer S3 // {List_} 26[017] - load local 3 - 27[058] - invoke virtual output // {Null_|Variable} - 31[053] - invoke static List.add /core/collections.toit // {Null_} + 27[058] - invoke virtual output // [{*}] -> {Null_|Variable} + 31[053] - invoke static List.add /core/collections.toit // [{List_}, {Null_|Variable}] -> {Null_} 34[088] - return S1 2 Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit @@ -1191,11 +1191,11 @@ Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit - argument 2: {List_} 0[052] - load local, as class, pop 3 - Variable(42 - 43) // {True_|False_} 2[052] - load local, as class, pop 2 - List_(36 - 40) // {True_} - 4[009] - load field local 35 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 4[009] - load field local 35 // [{Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 6[029] - load [block] in Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit - 11[009] - load field local 101 // {Null_|List_} + 11[009] - load field local 101 // [{Variable}] -> {Null_|List_} 13[038] - load block 1 - 15[058] - invoke virtual do // {Null_} + 15[058] - invoke virtual do // [{Null_|List_}, [block]] -> {Null_} 19[089] - return null S3 3 [block] in Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit @@ -1205,15 +1205,15 @@ Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit 1[017] - load local 3 2[019] - load local 5 3[005] - load outer S1 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{*}, {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {True_|False_} 6[081] - branch if true T24 9[017] - load local 3 - 10[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 10[060] - invoke virtual get is_satisfied // [{*}] -> {Null_|True_|False_} 13[082] - branch if false T24 16[002] - pop, load local S3 18[005] - load outer S4 // {List_} 20[017] - load local 3 - 21[053] - invoke static List.add /core/collections.toit // {Null_} + 21[053] - invoke static List.add /core/collections.toit // [{List_}, {*}] -> {Null_} 24[088] - return S1 2 Plan tests/type_propagation/deltablue_test.toit @@ -1221,10 +1221,10 @@ Plan tests/type_propagation/deltablue_test.toit 0[016] - load local 2 1[023] - load smi 0 2[022] - load null - 3[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 3[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 6[014] - load local 0 7[004] - store local, pop S1 - 9[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 9[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 12[013] - store field, pop 0 14[016] - load local 2 15[088] - return S1 1 @@ -1233,31 +1233,31 @@ Plan.add_constraint tests/type_propagation/deltablue_test.toit - argument 0: {Plan} - argument 1: {*} 0[052] - load local, as class, pop 2 - EqualityConstraint(43 - 47) // {True_|False_} - 2[009] - load field local 3 // {Null_|List_} + 2[009] - load field local 3 // [{Plan}] -> {Null_|List_} 4[017] - load local 3 - 5[053] - invoke static List.add /core/collections.toit // {Null_} + 5[053] - invoke static List.add /core/collections.toit // [{Null_|List_}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 8[089] - return null S1 2 Plan.execute tests/type_propagation/deltablue_test.toit - argument 0: {Plan} 0[029] - load [block] in Plan.execute tests/type_propagation/deltablue_test.toit - 5[009] - load field local 3 // {Null_|List_} + 5[009] - load field local 3 // [{Plan}] -> {Null_|List_} 7[038] - load block 1 - 9[058] - invoke virtual do // {Null_} + 9[058] - invoke virtual do // [{Null_|List_}, [block]] -> {Null_} 13[089] - return null S2 1 [block] in Plan.execute tests/type_propagation/deltablue_test.toit - argument 0: [block] - argument 1: {*} 0[016] - load local 2 - 1[058] - invoke virtual execute // {Null_} + 1[058] - invoke virtual execute // [{*}] -> {Null_} 5[088] - return S1 2 chain_test tests/type_propagation/deltablue_test.toit - argument 0: {SmallInteger_} 0[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} 2[042] - allocate instance Planner - 4[053] - invoke static Planner tests/type_propagation/deltablue_test.toit // {Planner} + 4[053] - invoke static Planner tests/type_propagation/deltablue_test.toit // [{Planner}] -> {Planner} 7[035] - store global var G7 9[041] - pop 1 10[022] - load null @@ -1266,32 +1266,32 @@ chain_test tests/type_propagation/deltablue_test.toit 13[023] - load smi 0 14[014] - load local 0 15[000] - load local S7 - 17[065] - invoke lte // {True_|False_} + 17[065] - invoke lte // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 18[082] - branch if false T85 21[042] - allocate instance Variable 23[020] - load literal v 25[016] - load local 2 - 26[058] - invoke virtual stringify // {String_} - 30[073] - invoke add // {String_} + 26[058] - invoke virtual stringify // [{LargeInteger_|SmallInteger_}] -> {String_} + 30[073] - invoke add // [{String_}, {String_}] -> {String_} 31[023] - load smi 0 - 32[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 32[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {SmallInteger_}] -> {Variable} 35[018] - load local 4 36[082] - branch if false T50 39[042] - allocate instance EqualityConstraint 41[033] - load global var lazy G0 // {Strength} 43[000] - load local S6 45[017] - load local 3 - 46[053] - invoke static EqualityConstraint tests/type_propagation/deltablue_test.toit // {EqualityConstraint} + 46[053] - invoke static EqualityConstraint tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}, {Strength}, {Null_|Variable}, {Variable}] -> {EqualityConstraint} 49[041] - pop 1 50[015] - load local 1 51[023] - load smi 0 - 52[062] - invoke eq // {True_|False_} + 52[062] - invoke eq // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 53[082] - branch if false T59 56[014] - load local 0 57[004] - store local, pop S4 59[015] - load local 1 60[000] - load local S8 - 62[062] - invoke eq // {True_|False_} + 62[062] - invoke eq // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 63[082] - branch if false T69 66[014] - load local 0 67[004] - store local, pop S3 @@ -1301,7 +1301,7 @@ chain_test tests/type_propagation/deltablue_test.toit 73[014] - load local 0 74[014] - load local 0 75[025] - load smi 1 - 76[073] - invoke add // {LargeInteger_|SmallInteger_} + 76[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 77[004] - store local, pop S2 79[041] - pop 1 80[083] - branch back T14 @@ -1309,65 +1309,65 @@ chain_test tests/type_propagation/deltablue_test.toit 86[042] - allocate instance StayConstraint 88[033] - load global var lazy G3 // {Strength} 90[016] - load local 2 - 91[053] - invoke static StayConstraint tests/type_propagation/deltablue_test.toit // {StayConstraint} + 91[053] - invoke static StayConstraint tests/type_propagation/deltablue_test.toit // [{StayConstraint}, {Strength}, {Null_|Variable}] -> {StayConstraint} 94[041] - pop 1 95[042] - allocate instance EditConstraint 97[033] - load global var lazy G2 // {Strength} 99[017] - load local 3 -100[053] - invoke static EditConstraint tests/type_propagation/deltablue_test.toit // {EditConstraint} +100[053] - invoke static EditConstraint tests/type_propagation/deltablue_test.toit // [{EditConstraint}, {Strength}, {Null_|Variable}] -> {EditConstraint} 103[030] - load global var G7 // {Null_|Planner} 105[015] - load local 1 -106[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} -109[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} -112[058] - invoke virtual extract_plan_from_constraints // {Plan} +106[053] - invoke static create_array_ /core/collections.toit // [{EditConstraint}] -> {LargeArray_|SmallArray_} +109[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} +112[058] - invoke virtual extract_plan_from_constraints // [{Null_|Planner}, {List_}] -> {Plan} 116[023] - load smi 0 117[014] - load local 0 118[026] - load smi 100 -120[063] - invoke lt // {True_|False_} +120[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 121[082] - branch if false T207 124[018] - load local 4 125[015] - load local 1 -126[061] - invoke virtual set value // {LargeInteger_|SmallInteger_} +126[061] - invoke virtual set value // [{Null_|Variable}, {LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 129[002] - pop, load local S1 -131[053] - invoke static Plan.execute tests/type_propagation/deltablue_test.toit // {Null_} +131[053] - invoke static Plan.execute tests/type_propagation/deltablue_test.toit // [{Plan}] -> {Null_} 134[002] - pop, load local S3 -136[060] - invoke virtual get value // {Null_|LargeInteger_|SmallInteger_} +136[060] - invoke virtual get value // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 139[015] - load local 1 -140[062] - invoke eq // {True_|False_} +140[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 141[081] - branch if true T195 144[026] - load smi 5 146[022] - load null -147[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} +147[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 150[014] - load local 0 151[023] - load smi 0 152[020] - load literal Chain test failed: -154[079] - invoke at_put // {*} +154[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {String_}] -> {*} 155[002] - pop, load local S0 157[025] - load smi 1 158[000] - load local S6 -160[060] - invoke virtual get value // {Null_|LargeInteger_|SmallInteger_} -163[079] - invoke at_put // {*} +160[060] - invoke virtual get value // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} +163[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {*} 164[002] - pop, load local S0 166[026] - load smi 2 168[020] - load literal != -170[079] - invoke at_put // {*} +170[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {String_}] -> {*} 171[002] - pop, load local S0 173[026] - load smi 3 175[017] - load local 3 -176[079] - invoke at_put // {*} +176[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {*} 177[002] - pop, load local S0 179[026] - load smi 4 181[020] - load literal -183[079] - invoke at_put // {*} +183[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {String_}] -> {*} 184[002] - pop, load local S0 186[004] - store local, pop S1 -188[053] - invoke static simple_interpolate_strings_ /core/utils.toit // {String_} -191[053] - invoke static throw /core/exceptions.toit // {} +188[053] - invoke static simple_interpolate_strings_ /core/utils.toit // [{LargeArray_|SmallArray_}] -> {String_} +191[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 194[041] - pop 1 195[014] - load local 0 196[014] - load local 0 197[025] - load smi 1 -198[073] - invoke add // {LargeInteger_|SmallInteger_} +198[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 199[004] - store local, pop S2 201[041] - pop 1 202[083] - branch back T117 @@ -1377,54 +1377,54 @@ projection_test tests/type_propagation/deltablue_test.toit - argument 0: {SmallInteger_} 0[052] - load local, as class, pop 2 - LargeInteger_(22 - 24) // {True_} 2[042] - allocate instance Planner - 4[053] - invoke static Planner tests/type_propagation/deltablue_test.toit // {Planner} + 4[053] - invoke static Planner tests/type_propagation/deltablue_test.toit // [{Planner}] -> {Planner} 7[035] - store global var G7 9[041] - pop 1 10[042] - allocate instance Variable 12[020] - load literal scale 14[026] - load smi 10 - 16[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 16[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {SmallInteger_}] -> {Variable} 19[042] - allocate instance Variable 21[020] - load literal offset 23[027] - load smi 1000 - 26[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 26[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {SmallInteger_}] -> {Variable} 29[022] - load null 30[022] - load null 31[023] - load smi 0 32[022] - load null - 33[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 33[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 36[014] - load local 0 37[004] - store local, pop S1 - 39[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 39[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 42[023] - load smi 0 43[014] - load local 0 44[000] - load local S9 - 46[063] - invoke lt // {True_|False_} + 46[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 47[082] - branch if false T123 50[042] - allocate instance Variable 52[020] - load literal src 54[016] - load local 2 - 55[058] - invoke virtual stringify // {String_} - 59[073] - invoke add // {String_} + 55[058] - invoke virtual stringify // [{LargeInteger_|SmallInteger_}] -> {String_} + 59[073] - invoke add // [{String_}, {String_}] -> {String_} 60[016] - load local 2 - 61[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 61[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {LargeInteger_|SmallInteger_}] -> {Variable} 64[004] - store local, pop S4 66[042] - allocate instance Variable 68[020] - load literal dst 70[016] - load local 2 - 71[058] - invoke virtual stringify // {String_} - 75[073] - invoke add // {String_} + 71[058] - invoke virtual stringify // [{LargeInteger_|SmallInteger_}] -> {String_} + 75[073] - invoke add // [{String_}, {String_}] -> {String_} 76[016] - load local 2 - 77[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 77[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {LargeInteger_|SmallInteger_}] -> {Variable} 80[004] - store local, pop S3 82[015] - load local 1 83[017] - load local 3 - 84[053] - invoke static List.add /core/collections.toit // {Null_} + 84[053] - invoke static List.add /core/collections.toit // [{List_}, {Variable}] -> {Null_} 87[041] - pop 1 88[042] - allocate instance StayConstraint 90[033] - load global var lazy G4 // {Strength} 92[019] - load local 5 - 93[053] - invoke static StayConstraint tests/type_propagation/deltablue_test.toit // {StayConstraint} + 93[053] - invoke static StayConstraint tests/type_propagation/deltablue_test.toit // [{StayConstraint}, {Strength}, {Variable}] -> {StayConstraint} 96[041] - pop 1 97[042] - allocate instance ScaleConstraint 99[033] - load global var lazy G0 // {Strength} @@ -1432,98 +1432,98 @@ projection_test tests/type_propagation/deltablue_test.toit 102[019] - load local 5 103[000] - load local S9 105[000] - load local S9 -107[053] - invoke static ScaleConstraint tests/type_propagation/deltablue_test.toit // {ScaleConstraint} +107[053] - invoke static ScaleConstraint tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}, {Strength}, {Variable}, {Variable}, {Variable}, {Variable}] -> {ScaleConstraint} 110[041] - pop 1 111[014] - load local 0 112[014] - load local 0 113[025] - load smi 1 -114[073] - invoke add // {LargeInteger_|SmallInteger_} +114[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 115[004] - store local, pop S2 117[041] - pop 1 118[083] - branch back T43 123[002] - pop, load local S2 125[026] - load smi 17 -127[053] - invoke static change tests/type_propagation/deltablue_test.toit // {Null_} +127[053] - invoke static change tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {SmallInteger_}] -> {Null_} 130[002] - pop, load local S1 -132[060] - invoke virtual get value // {Null_|LargeInteger_|SmallInteger_} +132[060] - invoke virtual get value // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 135[027] - load smi 1170 -138[062] - invoke eq // {True_|False_} +138[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 139[081] - branch if true T148 142[020] - load literal Projection 1 failed -144[053] - invoke static throw /core/exceptions.toit // {} +144[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 147[041] - pop 1 148[015] - load local 1 149[027] - load smi 1050 -152[053] - invoke static change tests/type_propagation/deltablue_test.toit // {Null_} +152[053] - invoke static change tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {SmallInteger_}] -> {Null_} 155[002] - pop, load local S2 -157[060] - invoke virtual get value // {Null_|LargeInteger_|SmallInteger_} +157[060] - invoke virtual get value // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 160[026] - load smi 5 -162[062] - invoke eq // {True_|False_} +162[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 163[081] - branch if true T172 166[020] - load literal Projection 2 failed -168[053] - invoke static throw /core/exceptions.toit // {} +168[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 171[041] - pop 1 172[018] - load local 4 173[026] - load smi 5 -175[053] - invoke static change tests/type_propagation/deltablue_test.toit // {Null_} +175[053] - invoke static change tests/type_propagation/deltablue_test.toit // [{Variable}, {SmallInteger_}] -> {Null_} 178[041] - pop 1 179[023] - load smi 0 180[014] - load local 0 181[000] - load local S9 183[025] - load smi 1 -184[074] - invoke sub // {LargeInteger_|SmallInteger_} -185[063] - invoke lt // {True_|False_} +184[074] - invoke sub // [{SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} +185[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 186[082] - branch if false T225 189[015] - load local 1 190[015] - load local 1 -191[078] - invoke at // {*} -192[060] - invoke virtual get value // {*} +191[078] - invoke at // [{List_}, {LargeInteger_|SmallInteger_}] -> {*} +192[060] - invoke virtual get value // [{*}] -> {*} 195[015] - load local 1 196[026] - load smi 5 -198[075] - invoke mul // {LargeInteger_|SmallInteger_} +198[075] - invoke mul // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 199[027] - load smi 1000 -202[073] - invoke add // {LargeInteger_|SmallInteger_} -203[062] - invoke eq // {True_|False_} +202[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} +203[062] - invoke eq // [{*}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 204[081] - branch if true T213 207[020] - load literal Projection 3 failed -209[053] - invoke static throw /core/exceptions.toit // {} +209[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 212[041] - pop 1 213[014] - load local 0 214[014] - load local 0 215[025] - load smi 1 -216[073] - invoke add // {LargeInteger_|SmallInteger_} +216[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 217[004] - store local, pop S2 219[041] - pop 1 220[083] - branch back T180 225[002] - pop, load local S3 227[027] - load smi 2000 -230[053] - invoke static change tests/type_propagation/deltablue_test.toit // {Null_} +230[053] - invoke static change tests/type_propagation/deltablue_test.toit // [{Variable}, {SmallInteger_}] -> {Null_} 233[041] - pop 1 234[023] - load smi 0 235[014] - load local 0 236[000] - load local S9 238[025] - load smi 1 -239[074] - invoke sub // {LargeInteger_|SmallInteger_} -240[063] - invoke lt // {True_|False_} +239[074] - invoke sub // [{SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} +240[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 241[082] - branch if false T280 244[015] - load local 1 245[015] - load local 1 -246[078] - invoke at // {*} -247[060] - invoke virtual get value // {*} +246[078] - invoke at // [{List_}, {LargeInteger_|SmallInteger_}] -> {*} +247[060] - invoke virtual get value // [{*}] -> {*} 250[015] - load local 1 251[026] - load smi 5 -253[075] - invoke mul // {LargeInteger_|SmallInteger_} +253[075] - invoke mul // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 254[027] - load smi 2000 -257[073] - invoke add // {LargeInteger_|SmallInteger_} -258[062] - invoke eq // {True_|False_} +257[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} +258[062] - invoke eq // [{*}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 259[081] - branch if true T268 262[020] - load literal Projection 4 failed -264[053] - invoke static throw /core/exceptions.toit // {} +264[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 267[041] - pop 1 268[014] - load local 0 269[014] - load local 0 270[025] - load smi 1 -271[073] - invoke add // {LargeInteger_|SmallInteger_} +271[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 272[004] - store local, pop S2 274[041] - pop 1 275[083] - branch back T235 @@ -1537,19 +1537,19 @@ change tests/type_propagation/deltablue_test.toit 4[042] - allocate instance EditConstraint 6[033] - load global var lazy G2 // {Strength} 8[019] - load local 5 - 9[053] - invoke static EditConstraint tests/type_propagation/deltablue_test.toit // {EditConstraint} + 9[053] - invoke static EditConstraint tests/type_propagation/deltablue_test.toit // [{EditConstraint}, {Strength}, {Variable}] -> {EditConstraint} 12[030] - load global var G7 // {Null_|Planner} 14[015] - load local 1 - 15[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} - 18[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} - 21[058] - invoke virtual extract_plan_from_constraints // {Plan} + 15[053] - invoke static create_array_ /core/collections.toit // [{EditConstraint}] -> {LargeArray_|SmallArray_} + 18[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} + 21[058] - invoke virtual extract_plan_from_constraints // [{Null_|Planner}, {List_}] -> {Plan} 25[029] - load [block] in change tests/type_propagation/deltablue_test.toit 30[026] - load smi 10 32[038] - load block 1 - 34[058] - invoke virtual repeat // {Null_} + 34[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 38[041] - pop 1 39[002] - pop, load local S1 - 41[053] - invoke static Constraint.destroy_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 41[053] - invoke static Constraint.destroy_constraint tests/type_propagation/deltablue_test.toit // [{EditConstraint}] -> {Null_} 44[089] - return null S3 2 [block] in change tests/type_propagation/deltablue_test.toit @@ -1561,5 +1561,5 @@ change tests/type_propagation/deltablue_test.toit 6[013] - store field, pop 1 8[016] - load local 2 9[005] - load outer S1 // {Plan} - 11[053] - invoke static Plan.execute tests/type_propagation/deltablue_test.toit // {Null_} + 11[053] - invoke static Plan.execute tests/type_propagation/deltablue_test.toit // [{Plan}] -> {Null_} 14[088] - return S1 1 diff --git a/tests/type_propagation/gold/deltablue_test.gold-O2 b/tests/type_propagation/gold/deltablue_test.gold-O2 index 3af6483ab..0ed77835d 100644 --- a/tests/type_propagation/gold/deltablue_test.gold-O2 +++ b/tests/type_propagation/gold/deltablue_test.gold-O2 @@ -2,16 +2,16 @@ main tests/type_propagation/deltablue_test.toit 0[029] - load [block] in main tests/type_propagation/deltablue_test.toit 5[026] - load smi 10 7[038] - load block 1 - 9[058] - invoke virtual repeat // {Null_} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 13[089] - return null S2 0 [block] in main tests/type_propagation/deltablue_test.toit - argument 0: [block] 0[026] - load smi 50 - 2[053] - invoke static chain_test tests/type_propagation/deltablue_test.toit // {Null_} + 2[053] - invoke static chain_test tests/type_propagation/deltablue_test.toit // [{SmallInteger_}] -> {Null_} 5[041] - pop 1 6[026] - load smi 50 - 8[053] - invoke static projection_test tests/type_propagation/deltablue_test.toit // {Null_} + 8[053] - invoke static projection_test tests/type_propagation/deltablue_test.toit // [{SmallInteger_}] -> {Null_} 11[088] - return S1 1 Strength tests/type_propagation/deltablue_test.toit @@ -29,44 +29,44 @@ Strength tests/type_propagation/deltablue_test.toit Strength.value tests/type_propagation/deltablue_test.toit - argument 0: {Strength} - 0[009] - load field local 2 // {Null_|SmallInteger_} + 0[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 2[088] - return S1 1 Strength.next_weaker tests/type_propagation/deltablue_test.toit - argument 0: {Strength} - 0[009] - load field local 2 // {Null_|SmallInteger_} + 0[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 2[023] - load smi 0 - 3[062] - invoke eq // {True_|False_} + 3[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 4[082] - branch if false T12 7[033] - load global var lazy G6 // {Strength} 9[088] - return S1 1 - 12[009] - load field local 2 // {Null_|SmallInteger_} + 12[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 14[025] - load smi 1 - 15[062] - invoke eq // {True_|False_} + 15[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 16[082] - branch if false T24 19[033] - load global var lazy G5 // {Strength} 21[088] - return S1 1 - 24[009] - load field local 2 // {Null_|SmallInteger_} + 24[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 26[026] - load smi 2 - 28[062] - invoke eq // {True_|False_} + 28[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 29[082] - branch if false T37 32[033] - load global var lazy G4 // {Strength} 34[088] - return S1 1 - 37[009] - load field local 2 // {Null_|SmallInteger_} + 37[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 39[026] - load smi 3 - 41[062] - invoke eq // {True_|False_} + 41[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 42[082] - branch if false T50 45[033] - load global var lazy G3 // {Strength} 47[088] - return S1 1 - 50[009] - load field local 2 // {Null_|SmallInteger_} + 50[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 52[026] - load smi 4 - 54[062] - invoke eq // {True_|False_} + 54[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 55[082] - branch if false T63 58[033] - load global var lazy G2 // {Strength} 60[088] - return S1 1 - 63[009] - load field local 2 // {Null_|SmallInteger_} + 63[009] - load field local 2 // [{Strength}] -> {Null_|SmallInteger_} 65[026] - load smi 5 - 67[062] - invoke eq // {True_|False_} + 67[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 68[082] - branch if false T76 71[033] - load global var lazy G1 // {Strength} 73[088] - return S1 1 @@ -77,49 +77,49 @@ REQUIRED tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[023] - load smi 0 3[020] - load literal required - 5[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 5[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 8[088] - return S1 0 STRONG_REFERRED tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[025] - load smi 1 3[020] - load literal strongPreferred - 5[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 5[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 8[088] - return S1 0 PREFERRED tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 2 4[020] - load literal preferred - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 STRONG_DEFAULT tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 3 4[020] - load literal strongDefault - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 NORMAL tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 4 4[020] - load literal normal - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 WEAK_DEFAULT tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 5 4[020] - load literal weakDefault - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 WEAKEST tests/type_propagation/deltablue_test.toit 0[042] - allocate instance Strength 2[026] - load smi 6 4[020] - load literal weakest - 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // {Strength} + 6[053] - invoke static Strength tests/type_propagation/deltablue_test.toit // [{Strength}, {SmallInteger_}, {String_}] -> {Strength} 9[088] - return S1 0 stronger tests/type_propagation/deltablue_test.toit @@ -127,9 +127,9 @@ stronger tests/type_propagation/deltablue_test.toit - argument 1: {Null_|Strength} 0[052] - load local, as class, pop 3 - Strength(42 - 43) // {True_|False_} 2[052] - load local, as class, pop 2 - Strength(42 - 43) // {True_|False_} - 4[009] - load field local 3 // {Null_|SmallInteger_} - 6[009] - load field local 3 // {Null_|SmallInteger_} - 8[063] - invoke lt // {True_|False_} + 4[009] - load field local 3 // [{Strength}] -> {Null_|SmallInteger_} + 6[009] - load field local 3 // [{Strength}] -> {Null_|SmallInteger_} + 8[063] - invoke lt // [{Null_|SmallInteger_}, {Null_|SmallInteger_}] -> {True_|False_} 9[088] - return S1 2 weaker tests/type_propagation/deltablue_test.toit @@ -137,9 +137,9 @@ weaker tests/type_propagation/deltablue_test.toit - argument 1: {Null_|Strength} 0[052] - load local, as class, pop 3 - Strength(42 - 43) // {True_|False_} 2[052] - load local, as class, pop 2 - Strength(42 - 43) // {True_|False_} - 4[009] - load field local 3 // {Null_|SmallInteger_} - 6[009] - load field local 3 // {Null_|SmallInteger_} - 8[064] - invoke gt // {True_|False_} + 4[009] - load field local 3 // [{Strength}] -> {Null_|SmallInteger_} + 6[009] - load field local 3 // [{Strength}] -> {Null_|SmallInteger_} + 8[064] - invoke gt // [{Null_|SmallInteger_}, {Null_|SmallInteger_}] -> {True_|False_} 9[088] - return S1 2 weakest tests/type_propagation/deltablue_test.toit @@ -149,7 +149,7 @@ weakest tests/type_propagation/deltablue_test.toit 2[052] - load local, as class, pop 2 - Strength(42 - 43) // {True_|False_} 4[017] - load local 3 5[017] - load local 3 - 6[053] - invoke static weaker tests/type_propagation/deltablue_test.toit // {True_|False_} + 6[053] - invoke static weaker tests/type_propagation/deltablue_test.toit // [{Strength}, {Strength}] -> {True_|False_} 9[082] - branch if false T19 12[017] - load local 3 13[088] - return S1 2 @@ -159,7 +159,7 @@ weakest tests/type_propagation/deltablue_test.toit Constraint.strength tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 0[009] - load field local 2 // {Null_|Strength} + 0[009] - load field local 2 // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|Strength} 2[088] - return S1 1 Constraint tests/type_propagation/deltablue_test.toit @@ -174,11 +174,11 @@ Constraint tests/type_propagation/deltablue_test.toit Constraint.add_constraint tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 0[016] - load local 2 - 1[058] - invoke virtual add_to_graph // {Null_} + 1[058] - invoke virtual add_to_graph // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 5[041] - pop 1 6[030] - load global var G7 // {Null_|Planner} 8[017] - load local 3 - 9[058] - invoke virtual incremental_add // {Null_} + 9[058] - invoke virtual incremental_add // [{Null_|Planner}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 13[089] - return null S1 1 Constraint.satisfy tests/type_propagation/deltablue_test.toit @@ -186,28 +186,28 @@ Constraint.satisfy tests/type_propagation/deltablue_test.toit - argument 1: {LargeInteger_|SmallInteger_} 0[017] - load local 3 1[017] - load local 3 - 2[058] - invoke virtual choose_method // {Null_} + 2[058] - invoke virtual choose_method // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_} 6[002] - pop, load local S3 - 8[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 8[060] - invoke virtual get is_satisfied // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|True_|False_} 11[081] - branch if true T31 - 14[009] - load field local 3 // {Null_|Strength} + 14[009] - load field local 3 // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|Strength} 16[033] - load global var lazy G0 // {Strength} - 18[062] - invoke eq // {True_|False_} + 18[062] - invoke eq // [{Null_|Strength}, {Strength}] -> {True_|False_} 19[082] - branch if false T28 22[020] - load literal Could not satisfy a required constraint! - 24[053] - invoke static throw /core/exceptions.toit // {} + 24[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 27[041] - pop 1 28[089] - return null S0 2 31[017] - load local 3 32[017] - load local 3 - 33[058] - invoke virtual mark_inputs // {Null_} + 33[058] - invoke virtual mark_inputs // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_} 37[002] - pop, load local S3 - 39[058] - invoke virtual output // {Null_|Variable} - 43[009] - load field local 32 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 39[058] - invoke virtual output // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|Variable} + 43[009] - load field local 32 // [{Null_|Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 45[014] - load local 0 46[082] - branch if false T55 49[014] - load local 0 - 50[058] - invoke virtual mark_unsatisfied // {Null_} + 50[058] - invoke virtual mark_unsatisfied // [{Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 54[041] - pop 1 55[015] - load local 1 56[000] - load local S6 @@ -215,10 +215,10 @@ Constraint.satisfy tests/type_propagation/deltablue_test.toit 60[030] - load global var G7 // {Null_|Planner} 62[000] - load local S6 64[000] - load local S6 - 66[058] - invoke virtual add_propagate // {True_|False_} + 66[058] - invoke virtual add_propagate // [{Null_|Planner}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 70[081] - branch if true T79 73[020] - load literal Cycle encountered - 75[053] - invoke static throw /core/exceptions.toit // {} + 75[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 78[041] - pop 1 79[015] - load local 1 80[019] - load local 5 @@ -229,14 +229,14 @@ Constraint.satisfy tests/type_propagation/deltablue_test.toit Constraint.destroy_constraint tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint} 0[016] - load local 2 - 1[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 1[060] - invoke virtual get is_satisfied // [{EditConstraint}] -> {Null_|True_|False_} 4[082] - branch if false T15 7[030] - load global var G7 // {Null_|Planner} 9[017] - load local 3 - 10[058] - invoke virtual incremental_remove // {Null_} + 10[058] - invoke virtual incremental_remove // [{Null_|Planner}, {EditConstraint}] -> {Null_} 14[041] - pop 1 15[016] - load local 2 - 16[058] - invoke virtual remove_from_graph // {Null_} + 16[058] - invoke virtual remove_from_graph // [{EditConstraint}] -> {Null_} 20[089] - return null S1 1 Constraint.is_input tests/type_propagation/deltablue_test.toit @@ -246,7 +246,7 @@ Constraint.is_input tests/type_propagation/deltablue_test.toit UnaryConstraint.is_satisfied tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 34 // {Null_|True_|False_} + 0[009] - load field local 34 // [{EditConstraint|StayConstraint}] -> {Null_|True_|False_} 2[088] - return S1 1 UnaryConstraint tests/type_propagation/deltablue_test.toit @@ -261,17 +261,17 @@ UnaryConstraint tests/type_propagation/deltablue_test.toit 7[013] - store field, pop 2 9[018] - load local 4 10[018] - load local 4 - 11[053] - invoke static Constraint tests/type_propagation/deltablue_test.toit // {EditConstraint|StayConstraint} + 11[053] - invoke static Constraint tests/type_propagation/deltablue_test.toit // [{EditConstraint|StayConstraint}, {Strength}] -> {EditConstraint|StayConstraint} 14[002] - pop, load local S4 - 16[053] - invoke static Constraint.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 16[053] - invoke static Constraint.add_constraint tests/type_propagation/deltablue_test.toit // [{EditConstraint|StayConstraint}] -> {Null_} 19[002] - pop, load local S4 21[088] - return S1 3 UnaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} 2[017] - load local 3 - 3[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 3[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EditConstraint|StayConstraint}] -> {Null_} 6[002] - pop, load local S2 8[020] - load literal false 10[013] - store field, pop 2 @@ -281,20 +281,20 @@ UnaryConstraint.choose_method tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - argument 1: {LargeInteger_|SmallInteger_} 0[017] - load local 3 - 1[009] - load field local 20 // {Null_|Variable} - 3[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 20 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} + 3[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 5[018] - load local 4 - 6[062] - invoke eq // {True_|False_} + 6[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 7[081] - branch if true T15 10[020] - load literal true 12[080] - branch T17 15[020] - load literal false 17[014] - load local 0 18[082] - branch if false T30 - 21[010] - pop, load field local 4 // {Null_|Strength} - 23[009] - load field local 21 // {Null_|Variable} - 25[007] - load field 4 // {Null_|Strength} - 27[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} + 21[010] - pop, load field local 4 // [{EditConstraint|StayConstraint}] -> {Null_|Strength} + 23[009] - load field local 21 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} + 25[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 27[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 30[013] - store field, pop 2 32[089] - return null S0 2 @@ -305,27 +305,27 @@ UnaryConstraint.mark_inputs tests/type_propagation/deltablue_test.toit UnaryConstraint.output tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} 2[088] - return S1 1 UnaryConstraint.recalculate tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 18 // {Null_|Variable} - 2[009] - load field local 3 // {Null_|Strength} + 0[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} + 2[009] - load field local 3 // [{EditConstraint|StayConstraint}] -> {Null_|Strength} 4[013] - store field, pop 4 - 6[009] - load field local 18 // {Null_|Variable} + 6[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} 8[017] - load local 3 - 9[058] - invoke virtual is_input // {True_|False_} + 9[058] - invoke virtual is_input // [{EditConstraint|StayConstraint}] -> {True_|False_} 13[081] - branch if true T21 16[020] - load literal true 18[080] - branch T23 21[020] - load literal false 23[013] - store field, pop 5 - 25[009] - load field local 18 // {Null_|Variable} - 27[007] - load field 5 // {Null_|True_|False_} + 25[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} + 27[007] - load field 5 // [{Null_|Variable}] -> {Null_|True_|False_} 29[082] - branch if false T38 32[016] - load local 2 - 33[058] - invoke virtual execute // {Null_} + 33[058] - invoke virtual execute // [{EditConstraint|StayConstraint}] -> {Null_} 37[041] - pop 1 38[089] - return null S0 1 @@ -344,9 +344,9 @@ UnaryConstraint.inputs_known tests/type_propagation/deltablue_test.toit UnaryConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit - argument 0: {EditConstraint|StayConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EditConstraint|StayConstraint}] -> {Null_|Variable} 2[017] - load local 3 - 3[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 3[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EditConstraint|StayConstraint}] -> {Null_} 6[002] - pop, load local S2 8[020] - load literal false 10[013] - store field, pop 2 @@ -360,7 +360,7 @@ StayConstraint tests/type_propagation/deltablue_test.toit 2[018] - load local 4 3[018] - load local 4 4[018] - load local 4 - 5[053] - invoke static UnaryConstraint tests/type_propagation/deltablue_test.toit // {StayConstraint} + 5[053] - invoke static UnaryConstraint tests/type_propagation/deltablue_test.toit // [{StayConstraint}, {Strength}, {Variable}] -> {StayConstraint} 8[002] - pop, load local S4 10[088] - return S1 3 @@ -376,7 +376,7 @@ EditConstraint tests/type_propagation/deltablue_test.toit 2[018] - load local 4 3[018] - load local 4 4[018] - load local 4 - 5[053] - invoke static UnaryConstraint tests/type_propagation/deltablue_test.toit // {EditConstraint} + 5[053] - invoke static UnaryConstraint tests/type_propagation/deltablue_test.toit // [{EditConstraint}, {Strength}, {Variable}] -> {EditConstraint} 8[002] - pop, load local S4 10[088] - return S1 3 @@ -405,69 +405,69 @@ BinaryConstraint tests/type_propagation/deltablue_test.toit 10[013] - store field, pop 3 12[019] - load local 5 13[019] - load local 5 - 14[053] - invoke static Constraint tests/type_propagation/deltablue_test.toit // {EqualityConstraint|ScaleConstraint} + 14[053] - invoke static Constraint tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint}, {Strength}] -> {EqualityConstraint|ScaleConstraint} 17[002] - pop, load local S5 - 19[053] - invoke static Constraint.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 19[053] - invoke static Constraint.add_constraint tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint}] -> {Null_} 22[002] - pop, load local S5 24[088] - return S1 4 BinaryConstraint.choose_method tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - argument 1: {LargeInteger_|SmallInteger_} - 0[009] - load field local 19 // {Null_|Variable} - 2[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 19 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 2[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 4[017] - load local 3 - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 6[082] - branch if false T40 9[017] - load local 3 10[025] - load smi 1 - 11[009] - load field local 37 // {Null_|Variable} - 13[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 11[009] - load field local 37 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 13[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 15[019] - load local 5 - 16[062] - invoke eq // {True_|False_} + 16[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 17[081] - branch if true T35 - 20[009] - load field local 5 // {Null_|Strength} - 22[009] - load field local 38 // {Null_|Variable} - 24[007] - load field 4 // {Null_|Strength} - 26[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} + 20[009] - load field local 5 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Strength} + 22[009] - load field local 38 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 24[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 26[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 29[082] - branch if false T35 32[041] - pop 1 33[026] - load smi 2 35[013] - store field, pop 3 37[080] - branch T133 - 40[009] - load field local 35 // {Null_|Variable} - 42[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 40[009] - load field local 35 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 42[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 44[017] - load local 3 - 45[062] - invoke eq // {True_|False_} + 45[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 46[082] - branch if false T79 49[017] - load local 3 50[025] - load smi 1 - 51[009] - load field local 21 // {Null_|Variable} - 53[007] - load field 3 // {Null_|LargeInteger_|SmallInteger_} + 51[009] - load field local 21 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 53[007] - load field 3 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 55[019] - load local 5 - 56[062] - invoke eq // {True_|False_} + 56[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 57[081] - branch if true T74 - 60[009] - load field local 5 // {Null_|Strength} - 62[009] - load field local 22 // {Null_|Variable} - 64[007] - load field 4 // {Null_|Strength} - 66[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} + 60[009] - load field local 5 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Strength} + 62[009] - load field local 22 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 64[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 66[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 69[082] - branch if false T74 72[041] - pop 1 73[023] - load smi 0 74[013] - store field, pop 3 76[080] - branch T133 - 79[009] - load field local 19 // {Null_|Variable} - 81[007] - load field 4 // {Null_|Strength} - 83[009] - load field local 36 // {Null_|Variable} - 85[007] - load field 4 // {Null_|Strength} - 87[053] - invoke static weaker tests/type_propagation/deltablue_test.toit // {True_|False_} + 79[009] - load field local 19 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 81[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 83[009] - load field local 36 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 85[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} + 87[053] - invoke static weaker tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 90[082] - branch if false T114 93[017] - load local 3 94[025] - load smi 1 - 95[009] - load field local 5 // {Null_|Strength} - 97[009] - load field local 22 // {Null_|Variable} - 99[007] - load field 4 // {Null_|Strength} -101[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} + 95[009] - load field local 5 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Strength} + 97[009] - load field local 22 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} + 99[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} +101[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 104[082] - branch if false T109 107[041] - pop 1 108[023] - load smi 0 @@ -475,10 +475,10 @@ BinaryConstraint.choose_method tests/type_propagation/deltablue_test.toit 111[080] - branch T133 114[017] - load local 3 115[023] - load smi 0 -116[009] - load field local 5 // {Null_|Strength} -118[009] - load field local 38 // {Null_|Variable} -120[007] - load field 4 // {Null_|Strength} -122[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // {True_|False_} +116[009] - load field local 5 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Strength} +118[009] - load field local 38 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} +120[007] - load field 4 // [{Null_|Variable}] -> {Null_|Strength} +122[053] - invoke static stronger tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {True_|False_} 125[082] - branch if false T131 128[041] - pop 1 129[026] - load smi 2 @@ -487,12 +487,12 @@ BinaryConstraint.choose_method tests/type_propagation/deltablue_test.toit BinaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 2[017] - load local 3 - 3[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} - 6[010] - pop, load field local 34 // {Null_|Variable} + 3[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EqualityConstraint|ScaleConstraint}] -> {Null_} + 6[010] - pop, load field local 34 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 8[017] - load local 3 - 9[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 9[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EqualityConstraint|ScaleConstraint}] -> {Null_} 12[002] - pop, load local S2 14[025] - load smi 1 15[013] - store field, pop 3 @@ -500,9 +500,9 @@ BinaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit BinaryConstraint.is_satisfied tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 50 // {Null_|SmallInteger_} + 0[009] - load field local 50 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|SmallInteger_} 2[025] - load smi 1 - 3[062] - invoke eq // {True_|False_} + 3[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 4[081] - branch if true T12 7[020] - load literal true 9[080] - branch T14 @@ -513,53 +513,53 @@ BinaryConstraint.mark_inputs tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - argument 1: {LargeInteger_|SmallInteger_} 0[017] - load local 3 - 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} + 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint}] -> {Variable} 4[017] - load local 3 5[013] - store field, pop 3 7[089] - return null S0 2 BinaryConstraint.input tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 50 // {Null_|SmallInteger_} + 0[009] - load field local 50 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|SmallInteger_} 2[026] - load smi 2 - 4[062] - invoke eq // {True_|False_} + 4[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 5[082] - branch if false T13 - 8[009] - load field local 18 // {Null_|Variable} + 8[009] - load field local 18 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 10[080] - branch T15 - 13[009] - load field local 34 // {Null_|Variable} + 13[009] - load field local 34 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 15[048] - as class Variable(37 - 38) // {True_|False_} 17[088] - return S1 1 BinaryConstraint.output tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 50 // {Null_|SmallInteger_} + 0[009] - load field local 50 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|SmallInteger_} 2[026] - load smi 2 - 4[062] - invoke eq // {True_|False_} + 4[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 5[082] - branch if false T13 - 8[009] - load field local 34 // {Null_|Variable} + 8[009] - load field local 34 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 10[080] - branch T15 - 13[009] - load field local 18 // {Null_|Variable} + 13[009] - load field local 18 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 15[048] - as class Variable(37 - 38) // {True_|False_} 17[088] - return S1 1 BinaryConstraint.recalculate tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} + 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}] -> {Variable} 4[017] - load local 3 - 5[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // {Variable} + 5[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}] -> {Variable} 8[014] - load local 0 - 9[009] - load field local 5 // {Null_|Strength} - 11[009] - load field local 67 // {Null_|Strength} - 13[053] - invoke static weakest tests/type_propagation/deltablue_test.toit // {Strength} + 9[009] - load field local 5 // [{EqualityConstraint}] -> {Null_|Strength} + 11[009] - load field local 67 // [{Variable}] -> {Null_|Strength} + 13[053] - invoke static weakest tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {Strength} 16[013] - store field, pop 4 18[014] - load local 0 - 19[009] - load field local 82 // {Null_|True_|False_} + 19[009] - load field local 82 // [{Variable}] -> {Null_|True_|False_} 21[013] - store field, pop 5 - 23[009] - load field local 80 // {Null_|True_|False_} + 23[009] - load field local 80 // [{Variable}] -> {Null_|True_|False_} 25[082] - branch if false T34 28[018] - load local 4 - 29[058] - invoke virtual execute // {Null_} + 29[058] - invoke virtual execute // [{EqualityConstraint}] -> {Null_} 33[041] - pop 1 34[089] - return null S2 1 @@ -574,27 +574,27 @@ BinaryConstraint.inputs_known tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - argument 1: {LargeInteger_|SmallInteger_} 0[017] - load local 3 - 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} - 4[009] - load field local 48 // {Null_|LargeInteger_|SmallInteger_} + 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint}] -> {Variable} + 4[009] - load field local 48 // [{Variable}] -> {Null_|LargeInteger_|SmallInteger_} 6[018] - load local 4 - 7[062] - invoke eq // {True_|False_} + 7[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 8[014] - load local 0 9[081] - branch if true T20 - 12[010] - pop, load field local 80 // {Null_|True_|False_} + 12[010] - pop, load field local 80 // [{Variable}] -> {Null_|True_|False_} 14[014] - load local 0 15[081] - branch if true T20 - 18[010] - pop, load field local 32 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 18[010] - pop, load field local 32 // [{Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 20[048] - as class True_(15 - 17) // {True_|False_} 22[088] - return S2 2 BinaryConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint|ScaleConstraint} - 0[009] - load field local 18 // {Null_|Variable} + 0[009] - load field local 18 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 2[017] - load local 3 - 3[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} - 6[010] - pop, load field local 34 // {Null_|Variable} + 3[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EqualityConstraint|ScaleConstraint}] -> {Null_} + 6[010] - pop, load field local 34 // [{EqualityConstraint|ScaleConstraint}] -> {Null_|Variable} 8[017] - load local 3 - 9[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 9[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {EqualityConstraint|ScaleConstraint}] -> {Null_} 12[002] - pop, load local S2 14[025] - load smi 1 15[013] - store field, pop 3 @@ -617,32 +617,32 @@ ScaleConstraint tests/type_propagation/deltablue_test.toit 12[000] - load local S7 14[000] - load local S7 16[000] - load local S7 - 18[053] - invoke static BinaryConstraint tests/type_propagation/deltablue_test.toit // {ScaleConstraint} + 18[053] - invoke static BinaryConstraint tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}, {Strength}, {Variable}, {Variable}] -> {ScaleConstraint} 21[002] - pop, load local S7 23[088] - return S1 6 ScaleConstraint.add_to_graph tests/type_propagation/deltablue_test.toit - argument 0: {ScaleConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit // {Null_} - 4[010] - pop, load field local 66 // {Null_|Variable} + 1[053] - invoke static BinaryConstraint.add_to_graph tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Null_} + 4[010] - pop, load field local 66 // [{ScaleConstraint}] -> {Null_|Variable} 6[017] - load local 3 - 7[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} - 10[010] - pop, load field local 82 // {Null_|Variable} + 7[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {ScaleConstraint}] -> {Null_} + 10[010] - pop, load field local 82 // [{ScaleConstraint}] -> {Null_|Variable} 12[017] - load local 3 - 13[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 13[053] - invoke static Variable.add_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {ScaleConstraint}] -> {Null_} 16[089] - return null S1 1 ScaleConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit - argument 0: {ScaleConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit // {Null_} - 4[010] - pop, load field local 66 // {Null_|Variable} + 1[053] - invoke static BinaryConstraint.remove_from_graph tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Null_} + 4[010] - pop, load field local 66 // [{ScaleConstraint}] -> {Null_|Variable} 6[017] - load local 3 - 7[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} - 10[010] - pop, load field local 82 // {Null_|Variable} + 7[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {ScaleConstraint}] -> {Null_} + 10[010] - pop, load field local 82 // [{ScaleConstraint}] -> {Null_|Variable} 12[017] - load local 3 - 13[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 13[053] - invoke static Variable.remove_constraint tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {ScaleConstraint}] -> {Null_} 16[089] - return null S1 1 ScaleConstraint.mark_inputs tests/type_propagation/deltablue_test.toit @@ -650,9 +650,9 @@ ScaleConstraint.mark_inputs tests/type_propagation/deltablue_test.toit - argument 1: {LargeInteger_|SmallInteger_} 0[017] - load local 3 1[017] - load local 3 - 2[053] - invoke static BinaryConstraint.mark_inputs tests/type_propagation/deltablue_test.toit // {Null_} - 5[010] - pop, load field local 67 // {Null_|Variable} - 7[009] - load field local 84 // {Null_|Variable} + 2[053] - invoke static BinaryConstraint.mark_inputs tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_} + 5[010] - pop, load field local 67 // [{ScaleConstraint}] -> {Null_|Variable} + 7[009] - load field local 84 // [{ScaleConstraint}] -> {Null_|Variable} 9[018] - load local 4 10[011] - store field 3 12[013] - store field, pop 3 @@ -660,59 +660,59 @@ ScaleConstraint.mark_inputs tests/type_propagation/deltablue_test.toit ScaleConstraint.execute tests/type_propagation/deltablue_test.toit - argument 0: {ScaleConstraint} - 0[009] - load field local 50 // {Null_|SmallInteger_} + 0[009] - load field local 50 // [{ScaleConstraint}] -> {Null_|SmallInteger_} 2[026] - load smi 2 - 4[062] - invoke eq // {True_|False_} + 4[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 5[082] - branch if false T29 - 8[009] - load field local 34 // {Null_|Variable} - 10[009] - load field local 19 // {Null_|Variable} - 12[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 14[009] - load field local 68 // {Null_|Variable} - 16[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 18[075] - invoke mul // {LargeInteger_|SmallInteger_} - 19[009] - load field local 84 // {Null_|Variable} - 21[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 23[073] - invoke add // {LargeInteger_|SmallInteger_} + 8[009] - load field local 34 // [{ScaleConstraint}] -> {Null_|Variable} + 10[009] - load field local 19 // [{ScaleConstraint}] -> {Null_|Variable} + 12[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 14[009] - load field local 68 // [{ScaleConstraint}] -> {Null_|Variable} + 16[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 18[075] - invoke mul // [{Null_|LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} + 19[009] - load field local 84 // [{ScaleConstraint}] -> {Null_|Variable} + 21[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 23[073] - invoke add // [{LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 24[013] - store field, pop 1 26[080] - branch T47 - 29[009] - load field local 18 // {Null_|Variable} - 31[009] - load field local 35 // {Null_|Variable} - 33[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 35[009] - load field local 84 // {Null_|Variable} - 37[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 39[074] - invoke sub // {LargeInteger_|SmallInteger_} - 40[009] - load field local 68 // {Null_|Variable} - 42[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} - 44[076] - invoke div // {LargeInteger_|SmallInteger_} + 29[009] - load field local 18 // [{ScaleConstraint}] -> {Null_|Variable} + 31[009] - load field local 35 // [{ScaleConstraint}] -> {Null_|Variable} + 33[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 35[009] - load field local 84 // [{ScaleConstraint}] -> {Null_|Variable} + 37[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 39[074] - invoke sub // [{Null_|LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} + 40[009] - load field local 68 // [{ScaleConstraint}] -> {Null_|Variable} + 42[007] - load field 1 // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} + 44[076] - invoke div // [{LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 45[013] - store field, pop 1 47[089] - return null S0 1 ScaleConstraint.recalculate tests/type_propagation/deltablue_test.toit - argument 0: {ScaleConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} + 1[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Variable} 4[017] - load local 3 - 5[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // {Variable} + 5[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Variable} 8[014] - load local 0 - 9[009] - load field local 5 // {Null_|Strength} - 11[009] - load field local 67 // {Null_|Strength} - 13[053] - invoke static weakest tests/type_propagation/deltablue_test.toit // {Strength} + 9[009] - load field local 5 // [{ScaleConstraint}] -> {Null_|Strength} + 11[009] - load field local 67 // [{Variable}] -> {Null_|Strength} + 13[053] - invoke static weakest tests/type_propagation/deltablue_test.toit // [{Null_|Strength}, {Null_|Strength}] -> {Strength} 16[013] - store field, pop 4 18[014] - load local 0 - 19[009] - load field local 82 // {Null_|True_|False_} + 19[009] - load field local 82 // [{Variable}] -> {Null_|True_|False_} 21[014] - load local 0 22[082] - branch if false T37 - 25[010] - pop, load field local 69 // {Null_|Variable} - 27[007] - load field 5 // {Null_|True_|False_} + 25[010] - pop, load field local 69 // [{ScaleConstraint}] -> {Null_|Variable} + 27[007] - load field 5 // [{Null_|Variable}] -> {Null_|True_|False_} 29[014] - load local 0 30[082] - branch if false T37 - 33[010] - pop, load field local 85 // {Null_|Variable} - 35[007] - load field 5 // {Null_|True_|False_} + 33[010] - pop, load field local 85 // [{ScaleConstraint}] -> {Null_|Variable} + 35[007] - load field 5 // [{Null_|Variable}] -> {Null_|True_|False_} 37[013] - store field, pop 5 - 39[009] - load field local 80 // {Null_|True_|False_} + 39[009] - load field local 80 // [{Variable}] -> {Null_|True_|False_} 41[082] - branch if false T49 44[018] - load local 4 - 45[053] - invoke static ScaleConstraint.execute tests/type_propagation/deltablue_test.toit // {Null_} + 45[053] - invoke static ScaleConstraint.execute tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}] -> {Null_} 48[041] - pop 1 49[089] - return null S2 1 @@ -726,17 +726,17 @@ EqualityConstraint tests/type_propagation/deltablue_test.toit 3[019] - load local 5 4[019] - load local 5 5[019] - load local 5 - 6[053] - invoke static BinaryConstraint tests/type_propagation/deltablue_test.toit // {EqualityConstraint} + 6[053] - invoke static BinaryConstraint tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}, {Strength}, {Variable}, {Variable}] -> {EqualityConstraint} 9[002] - pop, load local S5 11[088] - return S1 4 EqualityConstraint.execute tests/type_propagation/deltablue_test.toit - argument 0: {EqualityConstraint} 0[016] - load local 2 - 1[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // {Variable} + 1[053] - invoke static BinaryConstraint.output tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}] -> {Variable} 4[017] - load local 3 - 5[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // {Variable} - 8[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} + 5[053] - invoke static BinaryConstraint.input tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}] -> {Variable} + 8[007] - load field 1 // [{Variable}] -> {Null_|LargeInteger_|SmallInteger_} 10[013] - store field, pop 1 12[089] - return null S0 1 @@ -762,17 +762,17 @@ Variable tests/type_propagation/deltablue_test.toit 22[018] - load local 4 23[023] - load smi 0 24[022] - load null - 25[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 25[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 28[014] - load local 0 29[004] - store local, pop S1 - 31[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 31[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 34[013] - store field, pop 6 36[018] - load local 4 37[088] - return S1 3 Variable.value tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - 0[009] - load field local 18 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 18 // [{Variable}] -> {Null_|LargeInteger_|SmallInteger_} 2[088] - return S1 1 Variable.value= tests/type_propagation/deltablue_test.toit @@ -785,12 +785,12 @@ Variable.value= tests/type_propagation/deltablue_test.toit Variable.determined_by tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - 0[009] - load field local 34 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 0[009] - load field local 34 // [{Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 2[088] - return S1 1 Variable.mark tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - 0[009] - load field local 50 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 50 // [{Variable}] -> {Null_|LargeInteger_|SmallInteger_} 2[088] - return S1 1 Variable.mark= tests/type_propagation/deltablue_test.toit @@ -803,30 +803,30 @@ Variable.mark= tests/type_propagation/deltablue_test.toit Variable.constraints tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - 0[009] - load field local 98 // {Null_|List_} + 0[009] - load field local 98 // [{Variable}] -> {Null_|List_} 2[088] - return S1 1 Variable.add_constraint tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - argument 1: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 0[009] - load field local 99 // {Null_|List_} + 0[009] - load field local 99 // [{Variable}] -> {Null_|List_} 2[017] - load local 3 - 3[058] - invoke virtual add // {Null_} + 3[058] - invoke virtual add // [{Null_|List_}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 7[089] - return null S1 2 Variable.remove_constraint tests/type_propagation/deltablue_test.toit - argument 0: {Variable} - argument 1: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 0[009] - load field local 99 // {Null_|List_} + 0[009] - load field local 99 // [{Variable}] -> {Null_|List_} 2[029] - load [block] in Variable.remove_constraint tests/type_propagation/deltablue_test.toit 7[015] - load local 1 8[038] - load block 1 10[020] - load literal true - 12[058] - invoke virtual filter // {List_} + 12[058] - invoke virtual filter // [{Null_|List_}, [block], {True_}] -> {List_} 16[040] - pop 3 - 18[009] - load field local 35 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 18[009] - load field local 35 // [{Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 20[017] - load local 3 - 21[062] - invoke eq // {True_|False_} + 21[062] - invoke eq // [{Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {True_|False_} 22[082] - branch if false T29 25[017] - load local 3 26[022] - load null @@ -839,7 +839,7 @@ Variable.remove_constraint tests/type_propagation/deltablue_test.toit 0[016] - load local 2 1[018] - load local 4 2[005] - load outer S4 // {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 4[062] - invoke eq // {True_|False_} + 4[062] - invoke eq // [{*}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {True_|False_} 5[081] - branch if true T13 8[020] - load literal true 10[080] - branch T15 @@ -859,15 +859,15 @@ Planner.incremental_add tests/type_propagation/deltablue_test.toit - argument 1: {*} 0[052] - load local, as class, pop 2 - EqualityConstraint(38 - 42) // {True_|False_} 2[017] - load local 3 - 3[053] - invoke static Planner.new_mark tests/type_propagation/deltablue_test.toit // {LargeInteger_|SmallInteger_} + 3[053] - invoke static Planner.new_mark tests/type_propagation/deltablue_test.toit // [{Planner}] -> {LargeInteger_|SmallInteger_} 6[017] - load local 3 7[015] - load local 1 - 8[053] - invoke static Constraint.satisfy tests/type_propagation/deltablue_test.toit // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 8[053] - invoke static Constraint.satisfy tests/type_propagation/deltablue_test.toit // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 11[014] - load local 0 12[082] - branch if false T28 15[014] - load local 0 16[016] - load local 2 - 17[058] - invoke virtual satisfy // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 17[058] - invoke virtual satisfy // [{Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}, {LargeInteger_|SmallInteger_}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 21[004] - store local, pop S1 23[083] - branch back T11 28[089] - return null S2 2 @@ -876,26 +876,26 @@ Planner.incremental_remove tests/type_propagation/deltablue_test.toit - argument 0: {Planner} - argument 1: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 0[016] - load local 2 - 1[058] - invoke virtual output // {Null_|Variable} + 1[058] - invoke virtual output // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_|Variable} 5[017] - load local 3 - 6[058] - invoke virtual mark_unsatisfied // {Null_} + 6[058] - invoke virtual mark_unsatisfied // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 10[002] - pop, load local S3 - 12[058] - invoke virtual remove_from_graph // {Null_} + 12[058] - invoke virtual remove_from_graph // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 16[002] - pop, load local S4 18[015] - load local 1 - 19[053] - invoke static Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit // {List_} + 19[053] - invoke static Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit // [{Planner}, {Null_|Variable}] -> {List_} 22[033] - load global var lazy G0 // {Strength} 24[029] - load [block] in Planner.incremental_remove tests/type_propagation/deltablue_test.toit 29[016] - load local 2 30[038] - load block 1 - 32[058] - invoke virtual do // {Null_} + 32[058] - invoke virtual do // [{List_}, [block]] -> {Null_} 36[041] - pop 1 37[002] - pop, load local S0 - 39[058] - invoke virtual next_weaker // {Strength} + 39[058] - invoke virtual next_weaker // [{Strength}] -> {Strength} 43[004] - store local, pop S1 45[014] - load local 0 46[033] - load global var lazy G6 // {Strength} - 48[062] - invoke eq // {True_|False_} + 48[062] - invoke eq // [{Strength}, {Strength}] -> {True_|False_} 49[082] - branch if false T55 52[080] - branch T60 55[083] - branch back T24 @@ -906,23 +906,23 @@ Planner.incremental_remove tests/type_propagation/deltablue_test.toit - argument 1: {*} 0[022] - load null 1[017] - load local 3 - 2[060] - invoke virtual get strength // {Null_|Strength} + 2[060] - invoke virtual get strength // [{*}] -> {Null_|Strength} 5[019] - load local 5 6[005] - load outer S1 // {Strength} - 8[062] - invoke eq // {True_|False_} + 8[062] - invoke eq // [{Null_|Strength}, {Strength}] -> {True_|False_} 9[082] - branch if false T20 12[002] - pop, load local S3 14[005] - load outer S7 // {Planner} 16[017] - load local 3 - 17[053] - invoke static Planner.incremental_add tests/type_propagation/deltablue_test.toit // {Null_} + 17[053] - invoke static Planner.incremental_add tests/type_propagation/deltablue_test.toit // [{Planner}, {*}] -> {Null_} 20[088] - return S1 2 Planner.new_mark tests/type_propagation/deltablue_test.toit - argument 0: {Planner} 0[016] - load local 2 - 1[009] - load field local 3 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 3 // [{Planner}] -> {Null_|LargeInteger_|SmallInteger_} 3[025] - load smi 1 - 4[073] - invoke add // {LargeInteger_|SmallInteger_} + 4[073] - invoke add // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[011] - store field 0 7[088] - return S1 1 @@ -930,37 +930,37 @@ Planner.make_plan tests/type_propagation/deltablue_test.toit - argument 0: {Planner} - argument 1: {List_} 0[017] - load local 3 - 1[053] - invoke static Planner.new_mark tests/type_propagation/deltablue_test.toit // {LargeInteger_|SmallInteger_} + 1[053] - invoke static Planner.new_mark tests/type_propagation/deltablue_test.toit // [{Planner}] -> {LargeInteger_|SmallInteger_} 4[042] - allocate instance Plan - 6[053] - invoke static Plan tests/type_propagation/deltablue_test.toit // {Plan} + 6[053] - invoke static Plan tests/type_propagation/deltablue_test.toit // [{Plan}] -> {Plan} 9[018] - load local 4 10[014] - load local 0 - 11[053] - invoke static CollectionBase.is_empty /core/collections.toit // {True_|False_} + 11[053] - invoke static CollectionBase.is_empty /core/collections.toit // [{List_}] -> {True_|False_} 14[081] - branch if true T77 17[014] - load local 0 - 18[058] - invoke virtual remove_last // {*} + 18[058] - invoke virtual remove_last // [{List_}] -> {*} 22[014] - load local 0 - 23[058] - invoke virtual output // {Null_|Variable} - 27[060] - invoke virtual get mark // {Null_|LargeInteger_|SmallInteger_} + 23[058] - invoke virtual output // [{*}] -> {Null_|Variable} + 27[060] - invoke virtual get mark // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 30[018] - load local 4 - 31[062] - invoke eq // {True_|False_} + 31[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 32[081] - branch if true T71 35[014] - load local 0 36[018] - load local 4 - 37[058] - invoke virtual inputs_known // {True_|False_} + 37[058] - invoke virtual inputs_known // [{*}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 41[082] - branch if false T71 44[016] - load local 2 45[015] - load local 1 - 46[053] - invoke static Plan.add_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 46[053] - invoke static Plan.add_constraint tests/type_propagation/deltablue_test.toit // [{Plan}, {*}] -> {Null_} 49[002] - pop, load local S0 - 51[058] - invoke virtual output // {Null_|Variable} + 51[058] - invoke virtual output // [{*}] -> {Null_|Variable} 55[018] - load local 4 - 56[061] - invoke virtual set mark // {LargeInteger_|SmallInteger_} + 56[061] - invoke virtual set mark // [{Null_|Variable}, {LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 59[002] - pop, load local S7 61[015] - load local 1 - 62[058] - invoke virtual output // {Null_|Variable} + 62[058] - invoke virtual output // [{*}] -> {Null_|Variable} 66[017] - load local 3 - 67[053] - invoke static Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit // {Null_} + 67[053] - invoke static Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit // [{Planner}, {Null_|Variable}, {List_}] -> {Null_} 70[041] - pop 1 71[041] - pop 1 72[083] - branch back T10 @@ -972,18 +972,18 @@ Planner.extract_plan_from_constraints tests/type_propagation/deltablue_test.toit - argument 1: {List_} 0[023] - load smi 0 1[022] - load null - 2[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 2[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 5[014] - load local 0 6[004] - store local, pop S1 - 8[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 8[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 11[029] - load [block] in Planner.extract_plan_from_constraints tests/type_propagation/deltablue_test.toit 16[018] - load local 4 17[038] - load block 1 - 19[058] - invoke virtual do // {Null_} + 19[058] - invoke virtual do // [{List_}, [block]] -> {Null_} 23[041] - pop 1 24[002] - pop, load local S4 26[015] - load local 1 - 27[053] - invoke static Planner.make_plan tests/type_propagation/deltablue_test.toit // {Plan} + 27[053] - invoke static Planner.make_plan tests/type_propagation/deltablue_test.toit // [{Planner}, {List_}] -> {Plan} 30[088] - return S2 2 [block] in Planner.extract_plan_from_constraints tests/type_propagation/deltablue_test.toit @@ -991,15 +991,15 @@ Planner.extract_plan_from_constraints tests/type_propagation/deltablue_test.toit - argument 1: {*} 0[022] - load null 1[017] - load local 3 - 2[058] - invoke virtual is_input // {True_|False_} + 2[058] - invoke virtual is_input // [{*}] -> {True_|False_} 6[082] - branch if false T24 9[017] - load local 3 - 10[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 10[060] - invoke virtual get is_satisfied // [{*}] -> {Null_|True_|False_} 13[082] - branch if false T24 16[002] - pop, load local S3 18[005] - load outer S1 // {List_} 20[017] - load local 3 - 21[053] - invoke static List.add /core/collections.toit // {Null_} + 21[053] - invoke static List.add /core/collections.toit // [{List_}, {*}] -> {Null_} 24[088] - return S1 2 Planner.add_propagate tests/type_propagation/deltablue_test.toit @@ -1007,32 +1007,32 @@ Planner.add_propagate tests/type_propagation/deltablue_test.toit - argument 1: {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - argument 2: {LargeInteger_|SmallInteger_} 0[017] - load local 3 - 1[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} - 4[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 1[053] - invoke static create_array_ /core/collections.toit // [{EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {LargeArray_|SmallArray_} + 4[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 7[014] - load local 0 - 8[053] - invoke static CollectionBase.is_empty /core/collections.toit // {True_|False_} + 8[053] - invoke static CollectionBase.is_empty /core/collections.toit // [{List_}] -> {True_|False_} 11[081] - branch if true T68 14[014] - load local 0 - 15[058] - invoke virtual remove_last // {*} + 15[058] - invoke virtual remove_last // [{List_}] -> {*} 19[014] - load local 0 - 20[058] - invoke virtual output // {Null_|Variable} - 24[060] - invoke virtual get mark // {Null_|LargeInteger_|SmallInteger_} + 20[058] - invoke virtual output // [{*}] -> {Null_|Variable} + 24[060] - invoke virtual get mark // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 27[019] - load local 5 - 28[062] - invoke eq // {True_|False_} + 28[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 29[082] - branch if false T45 32[000] - load local S6 34[000] - load local S6 - 36[053] - invoke static Planner.incremental_remove tests/type_propagation/deltablue_test.toit // {Null_} + 36[053] - invoke static Planner.incremental_remove tests/type_propagation/deltablue_test.toit // [{Planner}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 39[041] - pop 1 40[020] - load literal false 42[088] - return S3 3 45[014] - load local 0 - 46[058] - invoke virtual recalculate // {Null_} + 46[058] - invoke virtual recalculate // [{*}] -> {Null_} 50[002] - pop, load local S6 52[015] - load local 1 - 53[058] - invoke virtual output // {Null_|Variable} + 53[058] - invoke virtual output // [{*}] -> {Null_|Variable} 57[017] - load local 3 - 58[053] - invoke static Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit // {Null_} + 58[053] - invoke static Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit // [{Planner}, {Null_|Variable}, {List_}] -> {Null_} 61[040] - pop 2 63[083] - branch back T7 68[020] - load literal true @@ -1053,31 +1053,31 @@ Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit 14[013] - store field, pop 5 16[023] - load smi 0 17[022] - load null - 18[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 18[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 21[014] - load local 0 22[004] - store local, pop S1 - 24[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 24[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 27[017] - load local 3 - 28[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} - 31[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 28[053] - invoke static create_array_ /core/collections.toit // [{Variable}] -> {LargeArray_|SmallArray_} + 31[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 34[014] - load local 0 - 35[053] - invoke static CollectionBase.is_empty /core/collections.toit // {True_|False_} + 35[053] - invoke static CollectionBase.is_empty /core/collections.toit // [{List_}] -> {True_|False_} 38[081] - branch if true T89 41[014] - load local 0 - 42[058] - invoke virtual remove_last // {*} + 42[058] - invoke virtual remove_last // [{List_}] -> {*} 46[029] - load [block] in Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit 51[015] - load local 1 - 52[060] - invoke virtual get constraints // {Null_|List_} + 52[060] - invoke virtual get constraints // [{*}] -> {Null_|List_} 55[038] - load block 1 - 57[058] - invoke virtual do // {Null_} + 57[058] - invoke virtual do // [{Null_|List_}, [block]] -> {Null_} 61[041] - pop 1 62[002] - pop, load local S0 - 64[060] - invoke virtual get determined_by // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 64[060] - invoke virtual get determined_by // [{*}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 67[029] - load [block] in Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit 72[016] - load local 2 - 73[060] - invoke virtual get constraints // {Null_|List_} + 73[060] - invoke virtual get constraints // [{*}] -> {Null_|List_} 76[038] - load block 1 - 78[058] - invoke virtual do // {Null_} + 78[058] - invoke virtual do // [{Null_|List_}, [block]] -> {Null_} 82[040] - pop 4 84[083] - branch back T34 89[015] - load local 1 @@ -1088,12 +1088,12 @@ Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit - argument 1: {*} 0[022] - load null 1[017] - load local 3 - 2[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 2[060] - invoke virtual get is_satisfied // [{*}] -> {Null_|True_|False_} 5[081] - branch if true T16 8[002] - pop, load local S3 10[005] - load outer S3 // {List_} 12[017] - load local 3 - 13[053] - invoke static List.add /core/collections.toit // {Null_} + 13[053] - invoke static List.add /core/collections.toit // [{List_}, {*}] -> {Null_} 16[088] - return S1 2 [block] in Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit @@ -1103,18 +1103,18 @@ Planner.remove_propagate_from tests/type_propagation/deltablue_test.toit 1[017] - load local 3 2[019] - load local 5 3[005] - load outer S1 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{*}, {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {True_|False_} 6[081] - branch if true T34 9[017] - load local 3 - 10[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 10[060] - invoke virtual get is_satisfied // [{*}] -> {Null_|True_|False_} 13[082] - branch if false T34 16[002] - pop, load local S2 - 18[058] - invoke virtual recalculate // {Null_} + 18[058] - invoke virtual recalculate // [{*}] -> {Null_} 22[002] - pop, load local S3 24[005] - load outer S3 // {List_} 26[017] - load local 3 - 27[058] - invoke virtual output // {Null_|Variable} - 31[053] - invoke static List.add /core/collections.toit // {Null_} + 27[058] - invoke virtual output // [{*}] -> {Null_|Variable} + 31[053] - invoke static List.add /core/collections.toit // [{List_}, {Null_|Variable}] -> {Null_} 34[088] - return S1 2 Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit @@ -1122,11 +1122,11 @@ Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit - argument 1: {Null_|Variable} - argument 2: {List_} 0[052] - load local, as class, pop 3 - Variable(37 - 38) // {True_|False_} - 2[009] - load field local 35 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} + 2[009] - load field local 35 // [{Variable}] -> {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} 4[029] - load [block] in Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit - 9[009] - load field local 101 // {Null_|List_} + 9[009] - load field local 101 // [{Variable}] -> {Null_|List_} 11[038] - load block 1 - 13[058] - invoke virtual do // {Null_} + 13[058] - invoke virtual do // [{Null_|List_}, [block]] -> {Null_} 17[089] - return null S3 3 [block] in Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit @@ -1136,15 +1136,15 @@ Planner.add_constraints_consuming_to tests/type_propagation/deltablue_test.toit 1[017] - load local 3 2[019] - load local 5 3[005] - load outer S1 // {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint} - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{*}, {Null_|EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {True_|False_} 6[081] - branch if true T24 9[017] - load local 3 - 10[060] - invoke virtual get is_satisfied // {Null_|True_|False_} + 10[060] - invoke virtual get is_satisfied // [{*}] -> {Null_|True_|False_} 13[082] - branch if false T24 16[002] - pop, load local S3 18[005] - load outer S4 // {List_} 20[017] - load local 3 - 21[053] - invoke static List.add /core/collections.toit // {Null_} + 21[053] - invoke static List.add /core/collections.toit // [{List_}, {*}] -> {Null_} 24[088] - return S1 2 Plan tests/type_propagation/deltablue_test.toit @@ -1152,10 +1152,10 @@ Plan tests/type_propagation/deltablue_test.toit 0[016] - load local 2 1[023] - load smi 0 2[022] - load null - 3[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 3[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 6[014] - load local 0 7[004] - store local, pop S1 - 9[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 9[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 12[013] - store field, pop 0 14[016] - load local 2 15[088] - return S1 1 @@ -1164,30 +1164,30 @@ Plan.add_constraint tests/type_propagation/deltablue_test.toit - argument 0: {Plan} - argument 1: {*} 0[052] - load local, as class, pop 2 - EqualityConstraint(38 - 42) // {True_|False_} - 2[009] - load field local 3 // {Null_|List_} + 2[009] - load field local 3 // [{Plan}] -> {Null_|List_} 4[017] - load local 3 - 5[053] - invoke static List.add /core/collections.toit // {Null_} + 5[053] - invoke static List.add /core/collections.toit // [{Null_|List_}, {EqualityConstraint|ScaleConstraint|EditConstraint|StayConstraint}] -> {Null_} 8[089] - return null S1 2 Plan.execute tests/type_propagation/deltablue_test.toit - argument 0: {Plan} 0[029] - load [block] in Plan.execute tests/type_propagation/deltablue_test.toit - 5[009] - load field local 3 // {Null_|List_} + 5[009] - load field local 3 // [{Plan}] -> {Null_|List_} 7[038] - load block 1 - 9[058] - invoke virtual do // {Null_} + 9[058] - invoke virtual do // [{Null_|List_}, [block]] -> {Null_} 13[089] - return null S2 1 [block] in Plan.execute tests/type_propagation/deltablue_test.toit - argument 0: [block] - argument 1: {*} 0[016] - load local 2 - 1[058] - invoke virtual execute // {Null_} + 1[058] - invoke virtual execute // [{*}] -> {Null_} 5[088] - return S1 2 chain_test tests/type_propagation/deltablue_test.toit - argument 0: {SmallInteger_} 0[042] - allocate instance Planner - 2[053] - invoke static Planner tests/type_propagation/deltablue_test.toit // {Planner} + 2[053] - invoke static Planner tests/type_propagation/deltablue_test.toit // [{Planner}] -> {Planner} 5[035] - store global var G7 7[041] - pop 1 8[022] - load null @@ -1196,32 +1196,32 @@ chain_test tests/type_propagation/deltablue_test.toit 11[023] - load smi 0 12[014] - load local 0 13[000] - load local S7 - 15[065] - invoke lte // {True_|False_} + 15[065] - invoke lte // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 16[082] - branch if false T83 19[042] - allocate instance Variable 21[020] - load literal v 23[016] - load local 2 - 24[058] - invoke virtual stringify // {String_} - 28[073] - invoke add // {String_} + 24[058] - invoke virtual stringify // [{LargeInteger_|SmallInteger_}] -> {String_} + 28[073] - invoke add // [{String_}, {String_}] -> {String_} 29[023] - load smi 0 - 30[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 30[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {SmallInteger_}] -> {Variable} 33[018] - load local 4 34[082] - branch if false T48 37[042] - allocate instance EqualityConstraint 39[033] - load global var lazy G0 // {Strength} 41[000] - load local S6 43[017] - load local 3 - 44[053] - invoke static EqualityConstraint tests/type_propagation/deltablue_test.toit // {EqualityConstraint} + 44[053] - invoke static EqualityConstraint tests/type_propagation/deltablue_test.toit // [{EqualityConstraint}, {Strength}, {Null_|Variable}, {Variable}] -> {EqualityConstraint} 47[041] - pop 1 48[015] - load local 1 49[023] - load smi 0 - 50[062] - invoke eq // {True_|False_} + 50[062] - invoke eq // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 51[082] - branch if false T57 54[014] - load local 0 55[004] - store local, pop S4 57[015] - load local 1 58[000] - load local S8 - 60[062] - invoke eq // {True_|False_} + 60[062] - invoke eq // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 61[082] - branch if false T67 64[014] - load local 0 65[004] - store local, pop S3 @@ -1231,7 +1231,7 @@ chain_test tests/type_propagation/deltablue_test.toit 71[014] - load local 0 72[014] - load local 0 73[025] - load smi 1 - 74[073] - invoke add // {LargeInteger_|SmallInteger_} + 74[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 75[004] - store local, pop S2 77[041] - pop 1 78[083] - branch back T12 @@ -1239,65 +1239,65 @@ chain_test tests/type_propagation/deltablue_test.toit 84[042] - allocate instance StayConstraint 86[033] - load global var lazy G3 // {Strength} 88[016] - load local 2 - 89[053] - invoke static StayConstraint tests/type_propagation/deltablue_test.toit // {StayConstraint} + 89[053] - invoke static StayConstraint tests/type_propagation/deltablue_test.toit // [{StayConstraint}, {Strength}, {Null_|Variable}] -> {StayConstraint} 92[041] - pop 1 93[042] - allocate instance EditConstraint 95[033] - load global var lazy G2 // {Strength} 97[017] - load local 3 - 98[053] - invoke static EditConstraint tests/type_propagation/deltablue_test.toit // {EditConstraint} + 98[053] - invoke static EditConstraint tests/type_propagation/deltablue_test.toit // [{EditConstraint}, {Strength}, {Null_|Variable}] -> {EditConstraint} 101[030] - load global var G7 // {Null_|Planner} 103[015] - load local 1 -104[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} -107[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} -110[058] - invoke virtual extract_plan_from_constraints // {Plan} +104[053] - invoke static create_array_ /core/collections.toit // [{EditConstraint}] -> {LargeArray_|SmallArray_} +107[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} +110[058] - invoke virtual extract_plan_from_constraints // [{Null_|Planner}, {List_}] -> {Plan} 114[023] - load smi 0 115[014] - load local 0 116[026] - load smi 100 -118[063] - invoke lt // {True_|False_} +118[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 119[082] - branch if false T205 122[018] - load local 4 123[015] - load local 1 -124[061] - invoke virtual set value // {LargeInteger_|SmallInteger_} +124[061] - invoke virtual set value // [{Null_|Variable}, {LargeInteger_|SmallInteger_}] -> {LargeInteger_|SmallInteger_} 127[002] - pop, load local S1 -129[053] - invoke static Plan.execute tests/type_propagation/deltablue_test.toit // {Null_} +129[053] - invoke static Plan.execute tests/type_propagation/deltablue_test.toit // [{Plan}] -> {Null_} 132[002] - pop, load local S3 -134[060] - invoke virtual get value // {Null_|LargeInteger_|SmallInteger_} +134[060] - invoke virtual get value // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 137[015] - load local 1 -138[062] - invoke eq // {True_|False_} +138[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 139[081] - branch if true T193 142[026] - load smi 5 144[022] - load null -145[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} +145[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 148[014] - load local 0 149[023] - load smi 0 150[020] - load literal Chain test failed: -152[079] - invoke at_put // {*} +152[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {String_}] -> {*} 153[002] - pop, load local S0 155[025] - load smi 1 156[000] - load local S6 -158[060] - invoke virtual get value // {Null_|LargeInteger_|SmallInteger_} -161[079] - invoke at_put // {*} +158[060] - invoke virtual get value // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} +161[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {*} 162[002] - pop, load local S0 164[026] - load smi 2 166[020] - load literal != -168[079] - invoke at_put // {*} +168[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {String_}] -> {*} 169[002] - pop, load local S0 171[026] - load smi 3 173[017] - load local 3 -174[079] - invoke at_put // {*} +174[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {*} 175[002] - pop, load local S0 177[026] - load smi 4 179[020] - load literal -181[079] - invoke at_put // {*} +181[079] - invoke at_put // [{LargeArray_|SmallArray_}, {SmallInteger_}, {String_}] -> {*} 182[002] - pop, load local S0 184[004] - store local, pop S1 -186[053] - invoke static simple_interpolate_strings_ /core/utils.toit // {String_} -189[053] - invoke static throw /core/exceptions.toit // {} +186[053] - invoke static simple_interpolate_strings_ /core/utils.toit // [{LargeArray_|SmallArray_}] -> {String_} +189[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 192[041] - pop 1 193[014] - load local 0 194[014] - load local 0 195[025] - load smi 1 -196[073] - invoke add // {LargeInteger_|SmallInteger_} +196[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 197[004] - store local, pop S2 199[041] - pop 1 200[083] - branch back T115 @@ -1306,54 +1306,54 @@ chain_test tests/type_propagation/deltablue_test.toit projection_test tests/type_propagation/deltablue_test.toit - argument 0: {SmallInteger_} 0[042] - allocate instance Planner - 2[053] - invoke static Planner tests/type_propagation/deltablue_test.toit // {Planner} + 2[053] - invoke static Planner tests/type_propagation/deltablue_test.toit // [{Planner}] -> {Planner} 5[035] - store global var G7 7[041] - pop 1 8[042] - allocate instance Variable 10[020] - load literal scale 12[026] - load smi 10 - 14[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 14[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {SmallInteger_}] -> {Variable} 17[042] - allocate instance Variable 19[020] - load literal offset 21[027] - load smi 1000 - 24[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 24[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {SmallInteger_}] -> {Variable} 27[022] - load null 28[022] - load null 29[023] - load smi 0 30[022] - load null - 31[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 31[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 34[014] - load local 0 35[004] - store local, pop S1 - 37[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 37[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 40[023] - load smi 0 41[014] - load local 0 42[000] - load local S9 - 44[063] - invoke lt // {True_|False_} + 44[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 45[082] - branch if false T121 48[042] - allocate instance Variable 50[020] - load literal src 52[016] - load local 2 - 53[058] - invoke virtual stringify // {String_} - 57[073] - invoke add // {String_} + 53[058] - invoke virtual stringify // [{LargeInteger_|SmallInteger_}] -> {String_} + 57[073] - invoke add // [{String_}, {String_}] -> {String_} 58[016] - load local 2 - 59[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 59[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {LargeInteger_|SmallInteger_}] -> {Variable} 62[004] - store local, pop S4 64[042] - allocate instance Variable 66[020] - load literal dst 68[016] - load local 2 - 69[058] - invoke virtual stringify // {String_} - 73[073] - invoke add // {String_} + 69[058] - invoke virtual stringify // [{LargeInteger_|SmallInteger_}] -> {String_} + 73[073] - invoke add // [{String_}, {String_}] -> {String_} 74[016] - load local 2 - 75[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // {Variable} + 75[053] - invoke static Variable tests/type_propagation/deltablue_test.toit // [{Variable}, {String_}, {LargeInteger_|SmallInteger_}] -> {Variable} 78[004] - store local, pop S3 80[015] - load local 1 81[017] - load local 3 - 82[053] - invoke static List.add /core/collections.toit // {Null_} + 82[053] - invoke static List.add /core/collections.toit // [{List_}, {Variable}] -> {Null_} 85[041] - pop 1 86[042] - allocate instance StayConstraint 88[033] - load global var lazy G4 // {Strength} 90[019] - load local 5 - 91[053] - invoke static StayConstraint tests/type_propagation/deltablue_test.toit // {StayConstraint} + 91[053] - invoke static StayConstraint tests/type_propagation/deltablue_test.toit // [{StayConstraint}, {Strength}, {Variable}] -> {StayConstraint} 94[041] - pop 1 95[042] - allocate instance ScaleConstraint 97[033] - load global var lazy G0 // {Strength} @@ -1361,98 +1361,98 @@ projection_test tests/type_propagation/deltablue_test.toit 100[019] - load local 5 101[000] - load local S9 103[000] - load local S9 -105[053] - invoke static ScaleConstraint tests/type_propagation/deltablue_test.toit // {ScaleConstraint} +105[053] - invoke static ScaleConstraint tests/type_propagation/deltablue_test.toit // [{ScaleConstraint}, {Strength}, {Variable}, {Variable}, {Variable}, {Variable}] -> {ScaleConstraint} 108[041] - pop 1 109[014] - load local 0 110[014] - load local 0 111[025] - load smi 1 -112[073] - invoke add // {LargeInteger_|SmallInteger_} +112[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 113[004] - store local, pop S2 115[041] - pop 1 116[083] - branch back T41 121[002] - pop, load local S2 123[026] - load smi 17 -125[053] - invoke static change tests/type_propagation/deltablue_test.toit // {Null_} +125[053] - invoke static change tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {SmallInteger_}] -> {Null_} 128[002] - pop, load local S1 -130[060] - invoke virtual get value // {Null_|LargeInteger_|SmallInteger_} +130[060] - invoke virtual get value // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 133[027] - load smi 1170 -136[062] - invoke eq // {True_|False_} +136[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 137[081] - branch if true T146 140[020] - load literal Projection 1 failed -142[053] - invoke static throw /core/exceptions.toit // {} +142[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 145[041] - pop 1 146[015] - load local 1 147[027] - load smi 1050 -150[053] - invoke static change tests/type_propagation/deltablue_test.toit // {Null_} +150[053] - invoke static change tests/type_propagation/deltablue_test.toit // [{Null_|Variable}, {SmallInteger_}] -> {Null_} 153[002] - pop, load local S2 -155[060] - invoke virtual get value // {Null_|LargeInteger_|SmallInteger_} +155[060] - invoke virtual get value // [{Null_|Variable}] -> {Null_|LargeInteger_|SmallInteger_} 158[026] - load smi 5 -160[062] - invoke eq // {True_|False_} +160[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 161[081] - branch if true T170 164[020] - load literal Projection 2 failed -166[053] - invoke static throw /core/exceptions.toit // {} +166[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 169[041] - pop 1 170[018] - load local 4 171[026] - load smi 5 -173[053] - invoke static change tests/type_propagation/deltablue_test.toit // {Null_} +173[053] - invoke static change tests/type_propagation/deltablue_test.toit // [{Variable}, {SmallInteger_}] -> {Null_} 176[041] - pop 1 177[023] - load smi 0 178[014] - load local 0 179[000] - load local S9 181[025] - load smi 1 -182[074] - invoke sub // {LargeInteger_|SmallInteger_} -183[063] - invoke lt // {True_|False_} +182[074] - invoke sub // [{SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} +183[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 184[082] - branch if false T223 187[015] - load local 1 188[015] - load local 1 -189[078] - invoke at // {*} -190[060] - invoke virtual get value // {*} +189[078] - invoke at // [{List_}, {LargeInteger_|SmallInteger_}] -> {*} +190[060] - invoke virtual get value // [{*}] -> {*} 193[015] - load local 1 194[026] - load smi 5 -196[075] - invoke mul // {LargeInteger_|SmallInteger_} +196[075] - invoke mul // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 197[027] - load smi 1000 -200[073] - invoke add // {LargeInteger_|SmallInteger_} -201[062] - invoke eq // {True_|False_} +200[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} +201[062] - invoke eq // [{*}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 202[081] - branch if true T211 205[020] - load literal Projection 3 failed -207[053] - invoke static throw /core/exceptions.toit // {} +207[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 210[041] - pop 1 211[014] - load local 0 212[014] - load local 0 213[025] - load smi 1 -214[073] - invoke add // {LargeInteger_|SmallInteger_} +214[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 215[004] - store local, pop S2 217[041] - pop 1 218[083] - branch back T178 223[002] - pop, load local S3 225[027] - load smi 2000 -228[053] - invoke static change tests/type_propagation/deltablue_test.toit // {Null_} +228[053] - invoke static change tests/type_propagation/deltablue_test.toit // [{Variable}, {SmallInteger_}] -> {Null_} 231[041] - pop 1 232[023] - load smi 0 233[014] - load local 0 234[000] - load local S9 236[025] - load smi 1 -237[074] - invoke sub // {LargeInteger_|SmallInteger_} -238[063] - invoke lt // {True_|False_} +237[074] - invoke sub // [{SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} +238[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 239[082] - branch if false T278 242[015] - load local 1 243[015] - load local 1 -244[078] - invoke at // {*} -245[060] - invoke virtual get value // {*} +244[078] - invoke at // [{List_}, {LargeInteger_|SmallInteger_}] -> {*} +245[060] - invoke virtual get value // [{*}] -> {*} 248[015] - load local 1 249[026] - load smi 5 -251[075] - invoke mul // {LargeInteger_|SmallInteger_} +251[075] - invoke mul // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 252[027] - load smi 2000 -255[073] - invoke add // {LargeInteger_|SmallInteger_} -256[062] - invoke eq // {True_|False_} +255[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} +256[062] - invoke eq // [{*}, {LargeInteger_|SmallInteger_}] -> {True_|False_} 257[081] - branch if true T266 260[020] - load literal Projection 4 failed -262[053] - invoke static throw /core/exceptions.toit // {} +262[053] - invoke static throw /core/exceptions.toit // [{String_}] -> {} 265[041] - pop 1 266[014] - load local 0 267[014] - load local 0 268[025] - load smi 1 -269[073] - invoke add // {LargeInteger_|SmallInteger_} +269[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 270[004] - store local, pop S2 272[041] - pop 1 273[083] - branch back T233 @@ -1465,19 +1465,19 @@ change tests/type_propagation/deltablue_test.toit 2[042] - allocate instance EditConstraint 4[033] - load global var lazy G2 // {Strength} 6[019] - load local 5 - 7[053] - invoke static EditConstraint tests/type_propagation/deltablue_test.toit // {EditConstraint} + 7[053] - invoke static EditConstraint tests/type_propagation/deltablue_test.toit // [{EditConstraint}, {Strength}, {Variable}] -> {EditConstraint} 10[030] - load global var G7 // {Null_|Planner} 12[015] - load local 1 - 13[053] - invoke static create_array_ /core/collections.toit // {LargeArray_|SmallArray_} - 16[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} - 19[058] - invoke virtual extract_plan_from_constraints // {Plan} + 13[053] - invoke static create_array_ /core/collections.toit // [{EditConstraint}] -> {LargeArray_|SmallArray_} + 16[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} + 19[058] - invoke virtual extract_plan_from_constraints // [{Null_|Planner}, {List_}] -> {Plan} 23[029] - load [block] in change tests/type_propagation/deltablue_test.toit 28[026] - load smi 10 30[038] - load block 1 - 32[058] - invoke virtual repeat // {Null_} + 32[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {Null_} 36[041] - pop 1 37[002] - pop, load local S1 - 39[053] - invoke static Constraint.destroy_constraint tests/type_propagation/deltablue_test.toit // {Null_} + 39[053] - invoke static Constraint.destroy_constraint tests/type_propagation/deltablue_test.toit // [{EditConstraint}] -> {Null_} 42[089] - return null S3 2 [block] in change tests/type_propagation/deltablue_test.toit @@ -1489,5 +1489,5 @@ change tests/type_propagation/deltablue_test.toit 6[013] - store field, pop 1 8[016] - load local 2 9[005] - load outer S1 // {Plan} - 11[053] - invoke static Plan.execute tests/type_propagation/deltablue_test.toit // {Null_} + 11[053] - invoke static Plan.execute tests/type_propagation/deltablue_test.toit // [{Plan}] -> {Null_} 14[088] - return S1 1 diff --git a/tests/type_propagation/gold/field_test.gold b/tests/type_propagation/gold/field_test.gold index 05180fd63..7c6bd23c4 100644 --- a/tests/type_propagation/gold/field_test.gold +++ b/tests/type_propagation/gold/field_test.gold @@ -5,27 +5,27 @@ main tests/type_propagation/field_test.toit test_simple tests/type_propagation/field_test.toit 0[042] - allocate instance A 2[026] - load smi 12 - 4[053] - invoke static A tests/type_propagation/field_test.toit // {A} + 4[053] - invoke static A tests/type_propagation/field_test.toit // [{A}, {SmallInteger_}] -> {A} 7[014] - load local 0 - 8[060] - invoke virtual get x // {String_|Null_|SmallInteger_} - 11[053] - invoke static id tests/type_propagation/field_test.toit // {String_|Null_|SmallInteger_} + 8[060] - invoke virtual get x // [{A}] -> {String_|Null_|SmallInteger_} + 11[053] - invoke static id tests/type_propagation/field_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 14[041] - pop 1 15[042] - allocate instance A 17[020] - load literal horse - 19[053] - invoke static A tests/type_propagation/field_test.toit // {A} + 19[053] - invoke static A tests/type_propagation/field_test.toit // [{A}, {String_}] -> {A} 22[004] - store local, pop S1 24[014] - load local 0 - 25[060] - invoke virtual get x // {String_|Null_|SmallInteger_} - 28[053] - invoke static id tests/type_propagation/field_test.toit // {String_|Null_|SmallInteger_} + 25[060] - invoke virtual get x // [{A}] -> {String_|Null_|SmallInteger_} + 28[053] - invoke static id tests/type_propagation/field_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 31[041] - pop 1 32[042] - allocate instance B 34[020] - load literal true 36[026] - load smi 42 - 38[053] - invoke static B tests/type_propagation/field_test.toit // {B} - 41[009] - load field local 0 // {Null_|True_} - 43[053] - invoke static id tests/type_propagation/field_test.toit // {Null_|True_} - 46[010] - pop, load field local 16 // {Null_|SmallInteger_} - 48[053] - invoke static id tests/type_propagation/field_test.toit // {Null_|SmallInteger_} + 38[053] - invoke static B tests/type_propagation/field_test.toit // [{B}, {True_}, {SmallInteger_}] -> {B} + 41[009] - load field local 0 // [{B}] -> {Null_|True_} + 43[053] - invoke static id tests/type_propagation/field_test.toit // [{Null_|True_}] -> {Null_|True_} + 46[010] - pop, load field local 16 // [{B}] -> {Null_|SmallInteger_} + 48[053] - invoke static id tests/type_propagation/field_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 51[089] - return null S3 0 id tests/type_propagation/field_test.toit @@ -35,7 +35,7 @@ id tests/type_propagation/field_test.toit A.x tests/type_propagation/field_test.toit - argument 0: {A} - 0[009] - load field local 2 // {String_|Null_|SmallInteger_} + 0[009] - load field local 2 // [{A}] -> {String_|Null_|SmallInteger_} 2[088] - return S1 1 A tests/type_propagation/field_test.toit @@ -56,6 +56,6 @@ B tests/type_propagation/field_test.toit 2[013] - store field, pop 1 4[018] - load local 4 5[018] - load local 4 - 6[053] - invoke static A tests/type_propagation/field_test.toit // {B} + 6[053] - invoke static A tests/type_propagation/field_test.toit // [{B}, {True_}] -> {B} 9[002] - pop, load local S4 11[088] - return S1 3 diff --git a/tests/type_propagation/gold/field_test.gold-O2 b/tests/type_propagation/gold/field_test.gold-O2 index 05180fd63..7c6bd23c4 100644 --- a/tests/type_propagation/gold/field_test.gold-O2 +++ b/tests/type_propagation/gold/field_test.gold-O2 @@ -5,27 +5,27 @@ main tests/type_propagation/field_test.toit test_simple tests/type_propagation/field_test.toit 0[042] - allocate instance A 2[026] - load smi 12 - 4[053] - invoke static A tests/type_propagation/field_test.toit // {A} + 4[053] - invoke static A tests/type_propagation/field_test.toit // [{A}, {SmallInteger_}] -> {A} 7[014] - load local 0 - 8[060] - invoke virtual get x // {String_|Null_|SmallInteger_} - 11[053] - invoke static id tests/type_propagation/field_test.toit // {String_|Null_|SmallInteger_} + 8[060] - invoke virtual get x // [{A}] -> {String_|Null_|SmallInteger_} + 11[053] - invoke static id tests/type_propagation/field_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 14[041] - pop 1 15[042] - allocate instance A 17[020] - load literal horse - 19[053] - invoke static A tests/type_propagation/field_test.toit // {A} + 19[053] - invoke static A tests/type_propagation/field_test.toit // [{A}, {String_}] -> {A} 22[004] - store local, pop S1 24[014] - load local 0 - 25[060] - invoke virtual get x // {String_|Null_|SmallInteger_} - 28[053] - invoke static id tests/type_propagation/field_test.toit // {String_|Null_|SmallInteger_} + 25[060] - invoke virtual get x // [{A}] -> {String_|Null_|SmallInteger_} + 28[053] - invoke static id tests/type_propagation/field_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 31[041] - pop 1 32[042] - allocate instance B 34[020] - load literal true 36[026] - load smi 42 - 38[053] - invoke static B tests/type_propagation/field_test.toit // {B} - 41[009] - load field local 0 // {Null_|True_} - 43[053] - invoke static id tests/type_propagation/field_test.toit // {Null_|True_} - 46[010] - pop, load field local 16 // {Null_|SmallInteger_} - 48[053] - invoke static id tests/type_propagation/field_test.toit // {Null_|SmallInteger_} + 38[053] - invoke static B tests/type_propagation/field_test.toit // [{B}, {True_}, {SmallInteger_}] -> {B} + 41[009] - load field local 0 // [{B}] -> {Null_|True_} + 43[053] - invoke static id tests/type_propagation/field_test.toit // [{Null_|True_}] -> {Null_|True_} + 46[010] - pop, load field local 16 // [{B}] -> {Null_|SmallInteger_} + 48[053] - invoke static id tests/type_propagation/field_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 51[089] - return null S3 0 id tests/type_propagation/field_test.toit @@ -35,7 +35,7 @@ id tests/type_propagation/field_test.toit A.x tests/type_propagation/field_test.toit - argument 0: {A} - 0[009] - load field local 2 // {String_|Null_|SmallInteger_} + 0[009] - load field local 2 // [{A}] -> {String_|Null_|SmallInteger_} 2[088] - return S1 1 A tests/type_propagation/field_test.toit @@ -56,6 +56,6 @@ B tests/type_propagation/field_test.toit 2[013] - store field, pop 1 4[018] - load local 4 5[018] - load local 4 - 6[053] - invoke static A tests/type_propagation/field_test.toit // {B} + 6[053] - invoke static A tests/type_propagation/field_test.toit // [{B}, {True_}] -> {B} 9[002] - pop, load local S4 11[088] - return S1 3 diff --git a/tests/type_propagation/gold/finally_test.gold b/tests/type_propagation/gold/finally_test.gold index e09a2a781..009b140dc 100644 --- a/tests/type_propagation/gold/finally_test.gold +++ b/tests/type_propagation/gold/finally_test.gold @@ -15,12 +15,12 @@ test_is_exception tests/type_propagation/finally_test.toit 5[029] - load [block] in test_is_exception tests/type_propagation/finally_test.toit 10[094] - link try 0 12[038] - load block 4 - 14[055] - invoke block S1 // {Null_} + 14[055] - invoke block S1 // [[block]] -> {Null_} 16[041] - pop 1 17[095] - unlink try 0 19[020] - load literal -2 21[015] - load local 1 - 22[062] - invoke eq // {True_|False_} + 22[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 23[022] - load null 24[015] - load local 1 25[082] - branch if false T30 @@ -30,7 +30,7 @@ test_is_exception tests/type_propagation/finally_test.toit 33[040] - pop 2 35[096] - unwind 36[002] - pop, load local S0 - 38[053] - invoke static id tests/type_propagation/finally_test.toit // {True_|False_} + 38[053] - invoke static id tests/type_propagation/finally_test.toit // [{True_|False_}] -> {True_|False_} 41[089] - return null S2 0 [block] in test_is_exception tests/type_propagation/finally_test.toit @@ -42,12 +42,12 @@ return_is_exception tests/type_propagation/finally_test.toit 0[029] - load [block] in return_is_exception tests/type_propagation/finally_test.toit 5[094] - link try 0 7[038] - load block 4 - 9[055] - invoke block S1 // {Null_} + 9[055] - invoke block S1 // [[block]] -> {Null_} 11[041] - pop 1 12[095] - unlink try 0 14[020] - load literal -2 16[015] - load local 1 - 17[062] - invoke eq // {True_|False_} + 17[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 18[022] - load null 19[015] - load local 1 20[082] - branch if false T25 @@ -69,12 +69,12 @@ test_exception tests/type_propagation/finally_test.toit 5[029] - load [block] in test_exception tests/type_propagation/finally_test.toit 10[094] - link try 0 12[038] - load block 4 - 14[055] - invoke block S1 // {Null_} + 14[055] - invoke block S1 // [[block]] -> {Null_} 16[041] - pop 1 17[095] - unlink try 0 19[020] - load literal -2 21[015] - load local 1 - 22[062] - invoke eq // {True_|False_} + 22[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 23[022] - load null 24[015] - load local 1 25[082] - branch if false T30 @@ -84,7 +84,7 @@ test_exception tests/type_propagation/finally_test.toit 33[040] - pop 2 35[096] - unwind 36[002] - pop, load local S0 - 38[053] - invoke static id tests/type_propagation/finally_test.toit // {Null_|Exception_} + 38[053] - invoke static id tests/type_propagation/finally_test.toit // [{Null_|Exception_}] -> {Null_|Exception_} 41[089] - return null S2 0 [block] in test_exception tests/type_propagation/finally_test.toit @@ -96,12 +96,12 @@ return_exception tests/type_propagation/finally_test.toit 0[029] - load [block] in return_exception tests/type_propagation/finally_test.toit 5[094] - link try 0 7[038] - load block 4 - 9[055] - invoke block S1 // {Null_} + 9[055] - invoke block S1 // [[block]] -> {Null_} 11[041] - pop 1 12[095] - unlink try 0 14[020] - load literal -2 16[015] - load local 1 - 17[062] - invoke eq // {True_|False_} + 17[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 18[022] - load null 19[015] - load local 1 20[082] - branch if false T25 @@ -124,12 +124,12 @@ catchy tests/type_propagation/finally_test.toit 0[029] - load [block] in catchy tests/type_propagation/finally_test.toit 5[094] - link try 0 7[038] - load block 4 - 9[055] - invoke block S1 // {} + 9[055] - invoke block S1 // [[block]] -> {} 11[041] - pop 1 12[095] - unlink try 0 14[020] - load literal -2 16[015] - load local 1 - 17[062] - invoke eq // {True_|False_} + 17[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 18[022] - load null 19[015] - load local 1 20[082] - branch if false T25 @@ -151,11 +151,11 @@ test_nlb_out_of_try tests/type_propagation/finally_test.toit 2[029] - load [block] in test_nlb_out_of_try tests/type_propagation/finally_test.toit 7[094] - link try 0 9[038] - load block 4 - 11[055] - invoke block S1 // {Null_} + 11[055] - invoke block S1 // [[block]] -> {Null_} 13[041] - pop 1 14[095] - unlink try 0 16[018] - load local 4 - 17[053] - invoke static id tests/type_propagation/finally_test.toit // {String_|Null_|SmallInteger_} + 17[053] - invoke static id tests/type_propagation/finally_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 20[041] - pop 1 21[096] - unwind 22[089] - return null S2 0 @@ -164,7 +164,7 @@ test_nlb_out_of_try tests/type_propagation/finally_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_nlb_out_of_try tests/type_propagation/finally_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/finally_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/finally_test.toit // [[block]] -> {} 10[040] - pop 2 12[083] - branch back T0 17[016] - load local 2 @@ -175,7 +175,7 @@ test_nlb_out_of_try tests/type_propagation/finally_test.toit 26[082] - branch if false T41 29[029] - load [block] in [block] in test_nlb_out_of_try tests/type_propagation/finally_test.toit 34[038] - load block 0 - 36[053] - invoke static invoke tests/type_propagation/finally_test.toit // {} + 36[053] - invoke static invoke tests/type_propagation/finally_test.toit // [[block]] -> {} 39[040] - pop 2 41[016] - load local 2 42[022] - load null @@ -203,13 +203,13 @@ id tests/type_propagation/finally_test.toit pick tests/type_propagation/finally_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 invoke tests/type_propagation/finally_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {} + 1[055] - invoke block S1 // [[block]] -> {} 3[089] - return null S1 1 diff --git a/tests/type_propagation/gold/finally_test.gold-O2 b/tests/type_propagation/gold/finally_test.gold-O2 index b246485c1..0c5a13ae3 100644 --- a/tests/type_propagation/gold/finally_test.gold-O2 +++ b/tests/type_propagation/gold/finally_test.gold-O2 @@ -15,12 +15,12 @@ test_is_exception tests/type_propagation/finally_test.toit 5[029] - load [block] in test_is_exception tests/type_propagation/finally_test.toit 10[094] - link try 0 12[038] - load block 4 - 14[055] - invoke block S1 // {Null_} + 14[055] - invoke block S1 // [[block]] -> {Null_} 16[041] - pop 1 17[095] - unlink try 0 19[020] - load literal -2 21[015] - load local 1 - 22[062] - invoke eq // {True_|False_} + 22[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 23[022] - load null 24[015] - load local 1 25[082] - branch if false T30 @@ -30,7 +30,7 @@ test_is_exception tests/type_propagation/finally_test.toit 33[040] - pop 2 35[096] - unwind 36[002] - pop, load local S0 - 38[053] - invoke static id tests/type_propagation/finally_test.toit // {True_|False_} + 38[053] - invoke static id tests/type_propagation/finally_test.toit // [{True_|False_}] -> {True_|False_} 41[089] - return null S2 0 [block] in test_is_exception tests/type_propagation/finally_test.toit @@ -42,12 +42,12 @@ return_is_exception tests/type_propagation/finally_test.toit 0[029] - load [block] in return_is_exception tests/type_propagation/finally_test.toit 5[094] - link try 0 7[038] - load block 4 - 9[055] - invoke block S1 // {Null_} + 9[055] - invoke block S1 // [[block]] -> {Null_} 11[041] - pop 1 12[095] - unlink try 0 14[020] - load literal -2 16[015] - load local 1 - 17[062] - invoke eq // {True_|False_} + 17[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 18[022] - load null 19[015] - load local 1 20[082] - branch if false T25 @@ -69,12 +69,12 @@ test_exception tests/type_propagation/finally_test.toit 5[029] - load [block] in test_exception tests/type_propagation/finally_test.toit 10[094] - link try 0 12[038] - load block 4 - 14[055] - invoke block S1 // {Null_} + 14[055] - invoke block S1 // [[block]] -> {Null_} 16[041] - pop 1 17[095] - unlink try 0 19[020] - load literal -2 21[015] - load local 1 - 22[062] - invoke eq // {True_|False_} + 22[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 23[022] - load null 24[015] - load local 1 25[082] - branch if false T30 @@ -84,7 +84,7 @@ test_exception tests/type_propagation/finally_test.toit 33[040] - pop 2 35[096] - unwind 36[002] - pop, load local S0 - 38[053] - invoke static id tests/type_propagation/finally_test.toit // {Null_|Exception_} + 38[053] - invoke static id tests/type_propagation/finally_test.toit // [{Null_|Exception_}] -> {Null_|Exception_} 41[089] - return null S2 0 [block] in test_exception tests/type_propagation/finally_test.toit @@ -96,12 +96,12 @@ return_exception tests/type_propagation/finally_test.toit 0[029] - load [block] in return_exception tests/type_propagation/finally_test.toit 5[094] - link try 0 7[038] - load block 4 - 9[055] - invoke block S1 // {Null_} + 9[055] - invoke block S1 // [[block]] -> {Null_} 11[041] - pop 1 12[095] - unlink try 0 14[020] - load literal -2 16[015] - load local 1 - 17[062] - invoke eq // {True_|False_} + 17[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 18[022] - load null 19[015] - load local 1 20[082] - branch if false T25 @@ -124,12 +124,12 @@ catchy tests/type_propagation/finally_test.toit 0[029] - load [block] in catchy tests/type_propagation/finally_test.toit 5[094] - link try 0 7[038] - load block 4 - 9[055] - invoke block S1 // {} + 9[055] - invoke block S1 // [[block]] -> {} 11[041] - pop 1 12[095] - unlink try 0 14[020] - load literal -2 16[015] - load local 1 - 17[062] - invoke eq // {True_|False_} + 17[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 18[022] - load null 19[015] - load local 1 20[082] - branch if false T25 @@ -151,11 +151,11 @@ test_nlb_out_of_try tests/type_propagation/finally_test.toit 2[029] - load [block] in test_nlb_out_of_try tests/type_propagation/finally_test.toit 7[094] - link try 0 9[038] - load block 4 - 11[055] - invoke block S1 // {Null_} + 11[055] - invoke block S1 // [[block]] -> {Null_} 13[041] - pop 1 14[095] - unlink try 0 16[018] - load local 4 - 17[053] - invoke static id tests/type_propagation/finally_test.toit // {String_|Null_|SmallInteger_} + 17[053] - invoke static id tests/type_propagation/finally_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 20[041] - pop 1 21[096] - unwind 22[089] - return null S2 0 @@ -164,7 +164,7 @@ test_nlb_out_of_try tests/type_propagation/finally_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_nlb_out_of_try tests/type_propagation/finally_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/finally_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/finally_test.toit // [[block]] -> {} 10[040] - pop 2 12[083] - branch back T0 17[016] - load local 2 @@ -175,7 +175,7 @@ test_nlb_out_of_try tests/type_propagation/finally_test.toit 26[082] - branch if false T41 29[029] - load [block] in [block] in test_nlb_out_of_try tests/type_propagation/finally_test.toit 34[038] - load block 0 - 36[053] - invoke static invoke tests/type_propagation/finally_test.toit // {} + 36[053] - invoke static invoke tests/type_propagation/finally_test.toit // [[block]] -> {} 39[040] - pop 2 41[016] - load local 2 42[022] - load null @@ -203,13 +203,13 @@ id tests/type_propagation/finally_test.toit pick tests/type_propagation/finally_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 invoke tests/type_propagation/finally_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {} + 1[055] - invoke block S1 // [[block]] -> {} 3[041] - pop 1 diff --git a/tests/type_propagation/gold/global_test.gold b/tests/type_propagation/gold/global_test.gold index 26a7b220e..fb79fdd06 100644 --- a/tests/type_propagation/gold/global_test.gold +++ b/tests/type_propagation/gold/global_test.gold @@ -16,19 +16,19 @@ Z tests/type_propagation/global_test.toit test_simple tests/type_propagation/global_test.toit 0[033] - load global var lazy G0 // {SmallInteger_} - 2[053] - invoke static id tests/type_propagation/global_test.toit // {SmallInteger_} + 2[053] - invoke static id tests/type_propagation/global_test.toit // [{SmallInteger_}] -> {SmallInteger_} 5[041] - pop 1 6[033] - load global var lazy G1 // {String_|SmallInteger_} - 8[053] - invoke static id tests/type_propagation/global_test.toit // {String_|SmallInteger_} + 8[053] - invoke static id tests/type_propagation/global_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 11[041] - pop 1 12[020] - load literal hest 14[035] - store global var G1 16[041] - pop 1 17[033] - load global var lazy G1 // {String_|SmallInteger_} - 19[053] - invoke static id tests/type_propagation/global_test.toit // {String_|SmallInteger_} + 19[053] - invoke static id tests/type_propagation/global_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 22[041] - pop 1 23[033] - load global var lazy G2 // {SmallInteger_} - 25[053] - invoke static id tests/type_propagation/global_test.toit // {SmallInteger_} + 25[053] - invoke static id tests/type_propagation/global_test.toit // [{SmallInteger_}] -> {SmallInteger_} 28[089] - return null S1 0 foo tests/type_propagation/global_test.toit diff --git a/tests/type_propagation/gold/global_test.gold-O2 b/tests/type_propagation/gold/global_test.gold-O2 index 26a7b220e..fb79fdd06 100644 --- a/tests/type_propagation/gold/global_test.gold-O2 +++ b/tests/type_propagation/gold/global_test.gold-O2 @@ -16,19 +16,19 @@ Z tests/type_propagation/global_test.toit test_simple tests/type_propagation/global_test.toit 0[033] - load global var lazy G0 // {SmallInteger_} - 2[053] - invoke static id tests/type_propagation/global_test.toit // {SmallInteger_} + 2[053] - invoke static id tests/type_propagation/global_test.toit // [{SmallInteger_}] -> {SmallInteger_} 5[041] - pop 1 6[033] - load global var lazy G1 // {String_|SmallInteger_} - 8[053] - invoke static id tests/type_propagation/global_test.toit // {String_|SmallInteger_} + 8[053] - invoke static id tests/type_propagation/global_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 11[041] - pop 1 12[020] - load literal hest 14[035] - store global var G1 16[041] - pop 1 17[033] - load global var lazy G1 // {String_|SmallInteger_} - 19[053] - invoke static id tests/type_propagation/global_test.toit // {String_|SmallInteger_} + 19[053] - invoke static id tests/type_propagation/global_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 22[041] - pop 1 23[033] - load global var lazy G2 // {SmallInteger_} - 25[053] - invoke static id tests/type_propagation/global_test.toit // {SmallInteger_} + 25[053] - invoke static id tests/type_propagation/global_test.toit // [{SmallInteger_}] -> {SmallInteger_} 28[089] - return null S1 0 foo tests/type_propagation/global_test.toit diff --git a/tests/type_propagation/gold/lambda_test.gold b/tests/type_propagation/gold/lambda_test.gold index 3bf2bb6b3..9a00a90e6 100644 --- a/tests/type_propagation/gold/lambda_test.gold +++ b/tests/type_propagation/gold/lambda_test.gold @@ -8,13 +8,13 @@ test_simple tests/type_propagation/lambda_test.toit 0[029] - load [lambda] in test_simple tests/type_propagation/lambda_test.toit 5[023] - load smi 0 6[022] - load null - 7[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 7[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 10[014] - load local 0 11[004] - store local, pop S1 13[023] - load smi 0 - 14[053] - invoke static lambda_ /core/objects.toit // {Lambda} + 14[053] - invoke static lambda_ /core/objects.toit // [{SmallInteger_}, {LargeArray_|SmallArray_}, {SmallInteger_}] -> {Lambda} 17[014] - load local 0 - 18[053] - invoke static Lambda.call /core/objects.toit // {*} + 18[053] - invoke static Lambda.call /core/objects.toit // [{Lambda}] -> {*} 21[088] - return S2 0 [lambda] in test_simple tests/type_propagation/lambda_test.toit @@ -25,40 +25,40 @@ test_arguments tests/type_propagation/lambda_test.toit 0[029] - load [lambda] in test_arguments tests/type_propagation/lambda_test.toit 5[023] - load smi 0 6[022] - load null - 7[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 7[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 10[014] - load local 0 11[004] - store local, pop S1 13[023] - load smi 0 - 14[053] - invoke static lambda_ /core/objects.toit // {Lambda} + 14[053] - invoke static lambda_ /core/objects.toit // [{SmallInteger_}, {LargeArray_|SmallArray_}, {SmallInteger_}] -> {Lambda} 17[026] - load smi 42 - 19[053] - invoke static Lambda.call /core/objects.toit // {*} + 19[053] - invoke static Lambda.call /core/objects.toit // [{Lambda}, {SmallInteger_}] -> {*} 22[041] - pop 1 23[029] - load [lambda] in test_arguments tests/type_propagation/lambda_test.toit 28[023] - load smi 0 29[022] - load null - 30[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 30[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 33[014] - load local 0 34[004] - store local, pop S1 36[023] - load smi 0 - 37[053] - invoke static lambda_ /core/objects.toit // {Lambda} + 37[053] - invoke static lambda_ /core/objects.toit // [{SmallInteger_}, {LargeArray_|SmallArray_}, {SmallInteger_}] -> {Lambda} 40[026] - load smi 42 42[020] - load literal fisk - 44[053] - invoke static Lambda.call /core/objects.toit // {*} + 44[053] - invoke static Lambda.call /core/objects.toit // [{Lambda}, {SmallInteger_}, {String_}] -> {*} 47[089] - return null S1 0 [lambda] in test_arguments tests/type_propagation/lambda_test.toit - argument 0: {*} 0[016] - load local 2 - 1[053] - invoke static id tests/type_propagation/lambda_test.toit // {*} + 1[053] - invoke static id tests/type_propagation/lambda_test.toit // [{*}] -> {*} 4[088] - return S1 1 [lambda] in test_arguments tests/type_propagation/lambda_test.toit - argument 0: {*} - argument 1: {*} 0[017] - load local 3 - 1[053] - invoke static id tests/type_propagation/lambda_test.toit // {*} + 1[053] - invoke static id tests/type_propagation/lambda_test.toit // [{*}] -> {*} 4[002] - pop, load local S2 - 6[053] - invoke static id tests/type_propagation/lambda_test.toit // {*} + 6[053] - invoke static id tests/type_propagation/lambda_test.toit // [{*}] -> {*} 9[088] - return S1 2 id tests/type_propagation/lambda_test.toit diff --git a/tests/type_propagation/gold/lambda_test.gold-O2 b/tests/type_propagation/gold/lambda_test.gold-O2 index 3bf2bb6b3..9a00a90e6 100644 --- a/tests/type_propagation/gold/lambda_test.gold-O2 +++ b/tests/type_propagation/gold/lambda_test.gold-O2 @@ -8,13 +8,13 @@ test_simple tests/type_propagation/lambda_test.toit 0[029] - load [lambda] in test_simple tests/type_propagation/lambda_test.toit 5[023] - load smi 0 6[022] - load null - 7[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 7[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 10[014] - load local 0 11[004] - store local, pop S1 13[023] - load smi 0 - 14[053] - invoke static lambda_ /core/objects.toit // {Lambda} + 14[053] - invoke static lambda_ /core/objects.toit // [{SmallInteger_}, {LargeArray_|SmallArray_}, {SmallInteger_}] -> {Lambda} 17[014] - load local 0 - 18[053] - invoke static Lambda.call /core/objects.toit // {*} + 18[053] - invoke static Lambda.call /core/objects.toit // [{Lambda}] -> {*} 21[088] - return S2 0 [lambda] in test_simple tests/type_propagation/lambda_test.toit @@ -25,40 +25,40 @@ test_arguments tests/type_propagation/lambda_test.toit 0[029] - load [lambda] in test_arguments tests/type_propagation/lambda_test.toit 5[023] - load smi 0 6[022] - load null - 7[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 7[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 10[014] - load local 0 11[004] - store local, pop S1 13[023] - load smi 0 - 14[053] - invoke static lambda_ /core/objects.toit // {Lambda} + 14[053] - invoke static lambda_ /core/objects.toit // [{SmallInteger_}, {LargeArray_|SmallArray_}, {SmallInteger_}] -> {Lambda} 17[026] - load smi 42 - 19[053] - invoke static Lambda.call /core/objects.toit // {*} + 19[053] - invoke static Lambda.call /core/objects.toit // [{Lambda}, {SmallInteger_}] -> {*} 22[041] - pop 1 23[029] - load [lambda] in test_arguments tests/type_propagation/lambda_test.toit 28[023] - load smi 0 29[022] - load null - 30[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 30[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 33[014] - load local 0 34[004] - store local, pop S1 36[023] - load smi 0 - 37[053] - invoke static lambda_ /core/objects.toit // {Lambda} + 37[053] - invoke static lambda_ /core/objects.toit // [{SmallInteger_}, {LargeArray_|SmallArray_}, {SmallInteger_}] -> {Lambda} 40[026] - load smi 42 42[020] - load literal fisk - 44[053] - invoke static Lambda.call /core/objects.toit // {*} + 44[053] - invoke static Lambda.call /core/objects.toit // [{Lambda}, {SmallInteger_}, {String_}] -> {*} 47[089] - return null S1 0 [lambda] in test_arguments tests/type_propagation/lambda_test.toit - argument 0: {*} 0[016] - load local 2 - 1[053] - invoke static id tests/type_propagation/lambda_test.toit // {*} + 1[053] - invoke static id tests/type_propagation/lambda_test.toit // [{*}] -> {*} 4[088] - return S1 1 [lambda] in test_arguments tests/type_propagation/lambda_test.toit - argument 0: {*} - argument 1: {*} 0[017] - load local 3 - 1[053] - invoke static id tests/type_propagation/lambda_test.toit // {*} + 1[053] - invoke static id tests/type_propagation/lambda_test.toit // [{*}] -> {*} 4[002] - pop, load local S2 - 6[053] - invoke static id tests/type_propagation/lambda_test.toit // {*} + 6[053] - invoke static id tests/type_propagation/lambda_test.toit // [{*}] -> {*} 9[088] - return S1 2 id tests/type_propagation/lambda_test.toit diff --git a/tests/type_propagation/gold/literal_test.gold b/tests/type_propagation/gold/literal_test.gold index e9f2fc7bd..2a1dcff90 100644 --- a/tests/type_propagation/gold/literal_test.gold +++ b/tests/type_propagation/gold/literal_test.gold @@ -18,7 +18,7 @@ get_smi_or_string tests/type_propagation/literal_test.toit 0[053] - invoke static get_smi tests/type_propagation/literal_test.toit // {SmallInteger_} 3[014] - load local 0 4[023] - load smi 0 - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 6[082] - branch if false T13 9[014] - load local 0 10[088] - return S2 0 diff --git a/tests/type_propagation/gold/literal_test.gold-O2 b/tests/type_propagation/gold/literal_test.gold-O2 index e9f2fc7bd..2a1dcff90 100644 --- a/tests/type_propagation/gold/literal_test.gold-O2 +++ b/tests/type_propagation/gold/literal_test.gold-O2 @@ -18,7 +18,7 @@ get_smi_or_string tests/type_propagation/literal_test.toit 0[053] - invoke static get_smi tests/type_propagation/literal_test.toit // {SmallInteger_} 3[014] - load local 0 4[023] - load smi 0 - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{SmallInteger_}, {SmallInteger_}] -> {True_|False_} 6[082] - branch if false T13 9[014] - load local 0 10[088] - return S2 0 diff --git a/tests/type_propagation/gold/local_test.gold b/tests/type_propagation/gold/local_test.gold index 14f2824f7..c46be7ff1 100644 --- a/tests/type_propagation/gold/local_test.gold +++ b/tests/type_propagation/gold/local_test.gold @@ -21,12 +21,12 @@ test_if tests/type_propagation/local_test.toit 7[020] - load literal horse 9[004] - store local, pop S1 11[014] - load local 0 - 12[053] - invoke static id tests/type_propagation/local_test.toit // {String_|SmallInteger_} + 12[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 15[041] - pop 1 16[026] - load smi 42 18[004] - store local, pop S1 20[014] - load local 0 - 21[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 21[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 24[089] - return null S2 0 test_if_else tests/type_propagation/local_test.toit @@ -36,7 +36,7 @@ test_if_else tests/type_propagation/local_test.toit 7[020] - load literal horse 9[004] - store local, pop S1 11[014] - load local 0 - 12[053] - invoke static id tests/type_propagation/local_test.toit // {String_|SmallInteger_} + 12[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 15[041] - pop 1 16[053] - invoke static pick tests/type_propagation/local_test.toit // {True_|False_} 19[082] - branch if false T29 @@ -46,7 +46,7 @@ test_if_else tests/type_propagation/local_test.toit 29[020] - load literal true 31[004] - store local, pop S1 33[014] - load local 0 - 34[053] - invoke static id tests/type_propagation/local_test.toit // {String_|True_} + 34[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|True_}] -> {String_|True_} 37[089] - return null S2 0 test_if_nested tests/type_propagation/local_test.toit @@ -61,7 +61,7 @@ test_if_nested tests/type_propagation/local_test.toit 20[020] - load literal 3.1000000000000000888 22[004] - store local, pop S1 24[014] - load local 0 - 25[053] - invoke static id tests/type_propagation/local_test.toit // {float|SmallInteger_} + 25[053] - invoke static id tests/type_propagation/local_test.toit // [{float|SmallInteger_}] -> {float|SmallInteger_} 28[041] - pop 1 29[080] - branch T54 32[053] - invoke static pick tests/type_propagation/local_test.toit // {True_|False_} @@ -72,10 +72,10 @@ test_if_nested tests/type_propagation/local_test.toit 45[020] - load literal false 47[004] - store local, pop S1 49[014] - load local 0 - 50[053] - invoke static id tests/type_propagation/local_test.toit // {True_|False_} + 50[053] - invoke static id tests/type_propagation/local_test.toit // [{True_|False_}] -> {True_|False_} 53[041] - pop 1 54[014] - load local 0 - 55[053] - invoke static id tests/type_propagation/local_test.toit // {True_|False_|float|SmallInteger_} + 55[053] - invoke static id tests/type_propagation/local_test.toit // [{True_|False_|float|SmallInteger_}] -> {True_|False_|float|SmallInteger_} 58[089] - return null S2 0 test_if_more_locals tests/type_propagation/local_test.toit @@ -88,26 +88,26 @@ test_if_more_locals tests/type_propagation/local_test.toit 12[026] - load smi 87 14[004] - store local, pop S1 16[017] - load local 3 - 17[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 17[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 20[002] - pop, load local S2 - 22[053] - invoke static id tests/type_propagation/local_test.toit // {True_} + 22[053] - invoke static id tests/type_propagation/local_test.toit // [{True_}] -> {True_} 25[002] - pop, load local S1 - 27[053] - invoke static id tests/type_propagation/local_test.toit // {float} + 27[053] - invoke static id tests/type_propagation/local_test.toit // [{float}] -> {float} 30[002] - pop, load local S0 - 32[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 32[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 35[041] - pop 1 36[053] - invoke static pick tests/type_propagation/local_test.toit // {True_|False_} 39[082] - branch if false T46 42[020] - load literal false 44[004] - store local, pop S3 46[017] - load local 3 - 47[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 47[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 50[002] - pop, load local S2 - 52[053] - invoke static id tests/type_propagation/local_test.toit // {True_|False_} + 52[053] - invoke static id tests/type_propagation/local_test.toit // [{True_|False_}] -> {True_|False_} 55[002] - pop, load local S1 - 57[053] - invoke static id tests/type_propagation/local_test.toit // {float} + 57[053] - invoke static id tests/type_propagation/local_test.toit // [{float}] -> {float} 60[002] - pop, load local S0 - 62[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 62[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 65[089] - return null S5 0 test_loop_simple tests/type_propagation/local_test.toit @@ -117,11 +117,11 @@ test_loop_simple tests/type_propagation/local_test.toit 7[026] - load smi 2 9[004] - store local, pop S1 11[014] - load local 0 - 12[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 12[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 15[041] - pop 1 16[083] - branch back T1 21[014] - load local 0 - 22[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 22[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 25[089] - return null S2 0 test_loop_break tests/type_propagation/local_test.toit @@ -133,7 +133,7 @@ test_loop_break tests/type_propagation/local_test.toit 11[080] - branch T19 14[083] - branch back T1 19[014] - load local 0 - 20[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 20[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 23[041] - pop 1 24[022] - load null 25[020] - load literal horse @@ -146,13 +146,13 @@ test_loop_break tests/type_propagation/local_test.toit 44[026] - load smi 42 46[004] - store local, pop S1 48[014] - load local 0 - 49[053] - invoke static id tests/type_propagation/local_test.toit // {String_|SmallInteger_} + 49[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 52[041] - pop 1 53[083] - branch back T25 58[015] - load local 1 - 59[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 59[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 62[002] - pop, load local S0 - 64[053] - invoke static id tests/type_propagation/local_test.toit // {String_} + 64[053] - invoke static id tests/type_propagation/local_test.toit // [{String_}] -> {String_} 67[089] - return null S3 0 test_loop_continue tests/type_propagation/local_test.toit @@ -164,7 +164,7 @@ test_loop_continue tests/type_propagation/local_test.toit 11[080] - branch T14 14[083] - branch back T1 19[014] - load local 0 - 20[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 20[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 23[041] - pop 1 24[022] - load null 25[053] - invoke static pick tests/type_propagation/local_test.toit // {True_|False_} @@ -179,9 +179,9 @@ test_loop_continue tests/type_propagation/local_test.toit 49[004] - store local, pop S1 51[083] - branch back T25 56[015] - load local 1 - 57[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 57[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 60[002] - pop, load local S0 - 62[053] - invoke static id tests/type_propagation/local_test.toit // {String_|Null_|SmallInteger_} + 62[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 65[089] - return null S3 0 id tests/type_propagation/local_test.toit @@ -191,7 +191,7 @@ id tests/type_propagation/local_test.toit pick tests/type_propagation/local_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 diff --git a/tests/type_propagation/gold/local_test.gold-O2 b/tests/type_propagation/gold/local_test.gold-O2 index 14f2824f7..c46be7ff1 100644 --- a/tests/type_propagation/gold/local_test.gold-O2 +++ b/tests/type_propagation/gold/local_test.gold-O2 @@ -21,12 +21,12 @@ test_if tests/type_propagation/local_test.toit 7[020] - load literal horse 9[004] - store local, pop S1 11[014] - load local 0 - 12[053] - invoke static id tests/type_propagation/local_test.toit // {String_|SmallInteger_} + 12[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 15[041] - pop 1 16[026] - load smi 42 18[004] - store local, pop S1 20[014] - load local 0 - 21[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 21[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 24[089] - return null S2 0 test_if_else tests/type_propagation/local_test.toit @@ -36,7 +36,7 @@ test_if_else tests/type_propagation/local_test.toit 7[020] - load literal horse 9[004] - store local, pop S1 11[014] - load local 0 - 12[053] - invoke static id tests/type_propagation/local_test.toit // {String_|SmallInteger_} + 12[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 15[041] - pop 1 16[053] - invoke static pick tests/type_propagation/local_test.toit // {True_|False_} 19[082] - branch if false T29 @@ -46,7 +46,7 @@ test_if_else tests/type_propagation/local_test.toit 29[020] - load literal true 31[004] - store local, pop S1 33[014] - load local 0 - 34[053] - invoke static id tests/type_propagation/local_test.toit // {String_|True_} + 34[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|True_}] -> {String_|True_} 37[089] - return null S2 0 test_if_nested tests/type_propagation/local_test.toit @@ -61,7 +61,7 @@ test_if_nested tests/type_propagation/local_test.toit 20[020] - load literal 3.1000000000000000888 22[004] - store local, pop S1 24[014] - load local 0 - 25[053] - invoke static id tests/type_propagation/local_test.toit // {float|SmallInteger_} + 25[053] - invoke static id tests/type_propagation/local_test.toit // [{float|SmallInteger_}] -> {float|SmallInteger_} 28[041] - pop 1 29[080] - branch T54 32[053] - invoke static pick tests/type_propagation/local_test.toit // {True_|False_} @@ -72,10 +72,10 @@ test_if_nested tests/type_propagation/local_test.toit 45[020] - load literal false 47[004] - store local, pop S1 49[014] - load local 0 - 50[053] - invoke static id tests/type_propagation/local_test.toit // {True_|False_} + 50[053] - invoke static id tests/type_propagation/local_test.toit // [{True_|False_}] -> {True_|False_} 53[041] - pop 1 54[014] - load local 0 - 55[053] - invoke static id tests/type_propagation/local_test.toit // {True_|False_|float|SmallInteger_} + 55[053] - invoke static id tests/type_propagation/local_test.toit // [{True_|False_|float|SmallInteger_}] -> {True_|False_|float|SmallInteger_} 58[089] - return null S2 0 test_if_more_locals tests/type_propagation/local_test.toit @@ -88,26 +88,26 @@ test_if_more_locals tests/type_propagation/local_test.toit 12[026] - load smi 87 14[004] - store local, pop S1 16[017] - load local 3 - 17[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 17[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 20[002] - pop, load local S2 - 22[053] - invoke static id tests/type_propagation/local_test.toit // {True_} + 22[053] - invoke static id tests/type_propagation/local_test.toit // [{True_}] -> {True_} 25[002] - pop, load local S1 - 27[053] - invoke static id tests/type_propagation/local_test.toit // {float} + 27[053] - invoke static id tests/type_propagation/local_test.toit // [{float}] -> {float} 30[002] - pop, load local S0 - 32[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 32[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 35[041] - pop 1 36[053] - invoke static pick tests/type_propagation/local_test.toit // {True_|False_} 39[082] - branch if false T46 42[020] - load literal false 44[004] - store local, pop S3 46[017] - load local 3 - 47[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 47[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 50[002] - pop, load local S2 - 52[053] - invoke static id tests/type_propagation/local_test.toit // {True_|False_} + 52[053] - invoke static id tests/type_propagation/local_test.toit // [{True_|False_}] -> {True_|False_} 55[002] - pop, load local S1 - 57[053] - invoke static id tests/type_propagation/local_test.toit // {float} + 57[053] - invoke static id tests/type_propagation/local_test.toit // [{float}] -> {float} 60[002] - pop, load local S0 - 62[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 62[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 65[089] - return null S5 0 test_loop_simple tests/type_propagation/local_test.toit @@ -117,11 +117,11 @@ test_loop_simple tests/type_propagation/local_test.toit 7[026] - load smi 2 9[004] - store local, pop S1 11[014] - load local 0 - 12[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 12[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 15[041] - pop 1 16[083] - branch back T1 21[014] - load local 0 - 22[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 22[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 25[089] - return null S2 0 test_loop_break tests/type_propagation/local_test.toit @@ -133,7 +133,7 @@ test_loop_break tests/type_propagation/local_test.toit 11[080] - branch T19 14[083] - branch back T1 19[014] - load local 0 - 20[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 20[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 23[041] - pop 1 24[022] - load null 25[020] - load literal horse @@ -146,13 +146,13 @@ test_loop_break tests/type_propagation/local_test.toit 44[026] - load smi 42 46[004] - store local, pop S1 48[014] - load local 0 - 49[053] - invoke static id tests/type_propagation/local_test.toit // {String_|SmallInteger_} + 49[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|SmallInteger_}] -> {String_|SmallInteger_} 52[041] - pop 1 53[083] - branch back T25 58[015] - load local 1 - 59[053] - invoke static id tests/type_propagation/local_test.toit // {SmallInteger_} + 59[053] - invoke static id tests/type_propagation/local_test.toit // [{SmallInteger_}] -> {SmallInteger_} 62[002] - pop, load local S0 - 64[053] - invoke static id tests/type_propagation/local_test.toit // {String_} + 64[053] - invoke static id tests/type_propagation/local_test.toit // [{String_}] -> {String_} 67[089] - return null S3 0 test_loop_continue tests/type_propagation/local_test.toit @@ -164,7 +164,7 @@ test_loop_continue tests/type_propagation/local_test.toit 11[080] - branch T14 14[083] - branch back T1 19[014] - load local 0 - 20[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 20[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 23[041] - pop 1 24[022] - load null 25[053] - invoke static pick tests/type_propagation/local_test.toit // {True_|False_} @@ -179,9 +179,9 @@ test_loop_continue tests/type_propagation/local_test.toit 49[004] - store local, pop S1 51[083] - branch back T25 56[015] - load local 1 - 57[053] - invoke static id tests/type_propagation/local_test.toit // {Null_|SmallInteger_} + 57[053] - invoke static id tests/type_propagation/local_test.toit // [{Null_|SmallInteger_}] -> {Null_|SmallInteger_} 60[002] - pop, load local S0 - 62[053] - invoke static id tests/type_propagation/local_test.toit // {String_|Null_|SmallInteger_} + 62[053] - invoke static id tests/type_propagation/local_test.toit // [{String_|Null_|SmallInteger_}] -> {String_|Null_|SmallInteger_} 65[089] - return null S3 0 id tests/type_propagation/local_test.toit @@ -191,7 +191,7 @@ id tests/type_propagation/local_test.toit pick tests/type_propagation/local_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 diff --git a/tests/type_propagation/gold/map_test.gold b/tests/type_propagation/gold/map_test.gold index 38e24caf9..68e59a96c 100644 --- a/tests/type_propagation/gold/map_test.gold +++ b/tests/type_propagation/gold/map_test.gold @@ -4,11 +4,11 @@ main tests/type_propagation/map_test.toit test_simple tests/type_propagation/map_test.toit 0[042] - allocate instance Map - 2[053] - invoke static Map /core/collections.toit // {Map} + 2[053] - invoke static Map /core/collections.toit // [{Map}] -> {Map} 5[014] - load local 0 6[004] - store local, pop S1 - 8[009] - load field local 48 // {Null_|List_|SmallArray_} - 10[053] - invoke static id tests/type_propagation/map_test.toit // {Null_|List_|SmallArray_} + 8[009] - load field local 48 // [{Map}] -> {Null_|List_|SmallArray_} + 10[053] - invoke static id tests/type_propagation/map_test.toit // [{Null_|List_|SmallArray_}] -> {Null_|List_|SmallArray_} 13[089] - return null S2 0 id tests/type_propagation/map_test.toit diff --git a/tests/type_propagation/gold/map_test.gold-O2 b/tests/type_propagation/gold/map_test.gold-O2 index 38e24caf9..68e59a96c 100644 --- a/tests/type_propagation/gold/map_test.gold-O2 +++ b/tests/type_propagation/gold/map_test.gold-O2 @@ -4,11 +4,11 @@ main tests/type_propagation/map_test.toit test_simple tests/type_propagation/map_test.toit 0[042] - allocate instance Map - 2[053] - invoke static Map /core/collections.toit // {Map} + 2[053] - invoke static Map /core/collections.toit // [{Map}] -> {Map} 5[014] - load local 0 6[004] - store local, pop S1 - 8[009] - load field local 48 // {Null_|List_|SmallArray_} - 10[053] - invoke static id tests/type_propagation/map_test.toit // {Null_|List_|SmallArray_} + 8[009] - load field local 48 // [{Map}] -> {Null_|List_|SmallArray_} + 10[053] - invoke static id tests/type_propagation/map_test.toit // [{Null_|List_|SmallArray_}] -> {Null_|List_|SmallArray_} 13[089] - return null S2 0 id tests/type_propagation/map_test.toit diff --git a/tests/type_propagation/gold/nlr_test.gold b/tests/type_propagation/gold/nlr_test.gold index aa267d434..388cbf003 100644 --- a/tests/type_propagation/gold/nlr_test.gold +++ b/tests/type_propagation/gold/nlr_test.gold @@ -19,7 +19,7 @@ test_try tests/type_propagation/nlr_test.toit always_return tests/type_propagation/nlr_test.toit 0[029] - load [block] in always_return tests/type_propagation/nlr_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/nlr_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/nlr_test.toit // [[block]] -> {} 10[040] - pop 2 12[053] - invoke static unreachable /core/exceptions.toit 15[041] - pop 1 @@ -34,7 +34,7 @@ always_return tests/type_propagation/nlr_test.toit maybe_return tests/type_propagation/nlr_test.toit 0[029] - load [block] in maybe_return tests/type_propagation/nlr_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/nlr_test.toit // {Null_} + 7[053] - invoke static invoke tests/type_propagation/nlr_test.toit // [[block]] -> {Null_} 10[040] - pop 2 12[020] - load literal hest 14[088] - return S1 0 @@ -55,7 +55,7 @@ stop_unwinding tests/type_propagation/nlr_test.toit 2[029] - load [block] in stop_unwinding tests/type_propagation/nlr_test.toit 7[094] - link try 0 9[038] - load block 4 - 11[055] - invoke block S1 // {} + 11[055] - invoke block S1 // [[block]] -> {} 13[041] - pop 1 14[095] - unlink try 0 16[018] - load local 4 @@ -74,7 +74,7 @@ stop_unwinding tests/type_propagation/nlr_test.toit 10[041] - pop 1 11[029] - load [block] in [block] in stop_unwinding tests/type_propagation/nlr_test.toit 16[038] - load block 0 - 18[053] - invoke static invoke tests/type_propagation/nlr_test.toit // {} + 18[053] - invoke static invoke tests/type_propagation/nlr_test.toit // [[block]] -> {} 21[041] - pop 1 22[002] - pop, load local S2 24[020] - load literal true @@ -94,7 +94,7 @@ stop_unwinding_alternative tests/type_propagation/nlr_test.toit 2[029] - load [block] in stop_unwinding_alternative tests/type_propagation/nlr_test.toit 7[094] - link try 0 9[038] - load block 4 - 11[055] - invoke block S1 // {True_} + 11[055] - invoke block S1 // [[block]] -> {True_} 13[041] - pop 1 14[095] - unlink try 0 16[018] - load local 4 @@ -110,7 +110,7 @@ stop_unwinding_alternative tests/type_propagation/nlr_test.toit 5[041] - pop 1 6[029] - load [block] in [block] in stop_unwinding_alternative tests/type_propagation/nlr_test.toit 11[038] - load block 0 - 13[053] - invoke static invoke tests/type_propagation/nlr_test.toit // {Null_} + 13[053] - invoke static invoke tests/type_propagation/nlr_test.toit // [[block]] -> {Null_} 16[041] - pop 1 17[002] - pop, load local S2 19[020] - load literal true @@ -131,13 +131,13 @@ stop_unwinding_alternative tests/type_propagation/nlr_test.toit pick tests/type_propagation/nlr_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 invoke tests/type_propagation/nlr_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {Null_} + 1[055] - invoke block S1 // [[block]] -> {Null_} 3[088] - return S1 1 diff --git a/tests/type_propagation/gold/nlr_test.gold-O2 b/tests/type_propagation/gold/nlr_test.gold-O2 index 9d1415117..6ab4775ed 100644 --- a/tests/type_propagation/gold/nlr_test.gold-O2 +++ b/tests/type_propagation/gold/nlr_test.gold-O2 @@ -19,7 +19,7 @@ test_try tests/type_propagation/nlr_test.toit always_return tests/type_propagation/nlr_test.toit 0[029] - load [block] in always_return tests/type_propagation/nlr_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/nlr_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/nlr_test.toit // [[block]] -> {} 10[041] - pop 1 [block] in always_return tests/type_propagation/nlr_test.toit @@ -32,7 +32,7 @@ always_return tests/type_propagation/nlr_test.toit maybe_return tests/type_propagation/nlr_test.toit 0[029] - load [block] in maybe_return tests/type_propagation/nlr_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/nlr_test.toit // {Null_} + 7[053] - invoke static invoke tests/type_propagation/nlr_test.toit // [[block]] -> {Null_} 10[040] - pop 2 12[020] - load literal hest 14[088] - return S1 0 @@ -53,7 +53,7 @@ stop_unwinding tests/type_propagation/nlr_test.toit 2[029] - load [block] in stop_unwinding tests/type_propagation/nlr_test.toit 7[094] - link try 0 9[038] - load block 4 - 11[055] - invoke block S1 // {} + 11[055] - invoke block S1 // [[block]] -> {} 13[041] - pop 1 14[095] - unlink try 0 16[018] - load local 4 @@ -72,7 +72,7 @@ stop_unwinding tests/type_propagation/nlr_test.toit 10[041] - pop 1 11[029] - load [block] in [block] in stop_unwinding tests/type_propagation/nlr_test.toit 16[038] - load block 0 - 18[053] - invoke static invoke tests/type_propagation/nlr_test.toit // {} + 18[053] - invoke static invoke tests/type_propagation/nlr_test.toit // [[block]] -> {} 21[004] - store local, pop S1 23[088] - return S1 1 @@ -89,7 +89,7 @@ stop_unwinding_alternative tests/type_propagation/nlr_test.toit 2[029] - load [block] in stop_unwinding_alternative tests/type_propagation/nlr_test.toit 7[094] - link try 0 9[038] - load block 4 - 11[055] - invoke block S1 // {True_} + 11[055] - invoke block S1 // [[block]] -> {True_} 13[041] - pop 1 14[095] - unlink try 0 16[018] - load local 4 @@ -105,7 +105,7 @@ stop_unwinding_alternative tests/type_propagation/nlr_test.toit 5[041] - pop 1 6[029] - load [block] in [block] in stop_unwinding_alternative tests/type_propagation/nlr_test.toit 11[038] - load block 0 - 13[053] - invoke static invoke tests/type_propagation/nlr_test.toit // {Null_} + 13[053] - invoke static invoke tests/type_propagation/nlr_test.toit // [[block]] -> {Null_} 16[041] - pop 1 17[002] - pop, load local S2 19[020] - load literal true @@ -126,13 +126,13 @@ stop_unwinding_alternative tests/type_propagation/nlr_test.toit pick tests/type_propagation/nlr_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 invoke tests/type_propagation/nlr_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {Null_} + 1[055] - invoke block S1 // [[block]] -> {Null_} 3[088] - return S1 1 diff --git a/tests/type_propagation/gold/non_local_branch_test.gold b/tests/type_propagation/gold/non_local_branch_test.gold index 3d3f0ed99..1bd1ee53e 100644 --- a/tests/type_propagation/gold/non_local_branch_test.gold +++ b/tests/type_propagation/gold/non_local_branch_test.gold @@ -10,11 +10,11 @@ test_break tests/type_propagation/non_local_branch_test.toit 0[026] - load smi 42 2[029] - load [block] in test_break tests/type_propagation/non_local_branch_test.toit 7[038] - load block 0 - 9[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // {} + 9[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // [[block]] -> {} 12[040] - pop 2 14[083] - branch back T2 19[014] - load local 0 - 20[053] - invoke static id tests/type_propagation/non_local_branch_test.toit // {String_} + 20[053] - invoke static id tests/type_propagation/non_local_branch_test.toit // [{String_}] -> {String_} 23[089] - return null S2 0 [block] in test_break tests/type_propagation/non_local_branch_test.toit @@ -30,11 +30,11 @@ test_continue tests/type_propagation/non_local_branch_test.toit 0[026] - load smi 42 2[029] - load [block] in test_continue tests/type_propagation/non_local_branch_test.toit 7[038] - load block 0 - 9[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // {} + 9[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // [[block]] -> {} 12[040] - pop 2 14[083] - branch back T2 19[014] - load local 0 - 20[053] - invoke static id tests/type_propagation/non_local_branch_test.toit // {float} + 20[053] - invoke static id tests/type_propagation/non_local_branch_test.toit // [{float}] -> {float} 23[089] - return null S2 0 [block] in test_continue tests/type_propagation/non_local_branch_test.toit @@ -57,14 +57,14 @@ test_continue tests/type_propagation/non_local_branch_test.toit test_nested tests/type_propagation/non_local_branch_test.toit 0[029] - load [block] in test_nested tests/type_propagation/non_local_branch_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // {Null_} + 7[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // [[block]] -> {Null_} 10[089] - return null S2 0 [block] in test_nested tests/type_propagation/non_local_branch_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_nested tests/type_propagation/non_local_branch_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // [[block]] -> {} 10[040] - pop 2 12[083] - branch back T0 17[022] - load null @@ -83,13 +83,13 @@ id tests/type_propagation/non_local_branch_test.toit pick tests/type_propagation/non_local_branch_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 invoke tests/type_propagation/non_local_branch_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {Null_} + 1[055] - invoke block S1 // [[block]] -> {Null_} 3[089] - return null S1 1 diff --git a/tests/type_propagation/gold/non_local_branch_test.gold-O2 b/tests/type_propagation/gold/non_local_branch_test.gold-O2 index 3d3f0ed99..1bd1ee53e 100644 --- a/tests/type_propagation/gold/non_local_branch_test.gold-O2 +++ b/tests/type_propagation/gold/non_local_branch_test.gold-O2 @@ -10,11 +10,11 @@ test_break tests/type_propagation/non_local_branch_test.toit 0[026] - load smi 42 2[029] - load [block] in test_break tests/type_propagation/non_local_branch_test.toit 7[038] - load block 0 - 9[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // {} + 9[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // [[block]] -> {} 12[040] - pop 2 14[083] - branch back T2 19[014] - load local 0 - 20[053] - invoke static id tests/type_propagation/non_local_branch_test.toit // {String_} + 20[053] - invoke static id tests/type_propagation/non_local_branch_test.toit // [{String_}] -> {String_} 23[089] - return null S2 0 [block] in test_break tests/type_propagation/non_local_branch_test.toit @@ -30,11 +30,11 @@ test_continue tests/type_propagation/non_local_branch_test.toit 0[026] - load smi 42 2[029] - load [block] in test_continue tests/type_propagation/non_local_branch_test.toit 7[038] - load block 0 - 9[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // {} + 9[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // [[block]] -> {} 12[040] - pop 2 14[083] - branch back T2 19[014] - load local 0 - 20[053] - invoke static id tests/type_propagation/non_local_branch_test.toit // {float} + 20[053] - invoke static id tests/type_propagation/non_local_branch_test.toit // [{float}] -> {float} 23[089] - return null S2 0 [block] in test_continue tests/type_propagation/non_local_branch_test.toit @@ -57,14 +57,14 @@ test_continue tests/type_propagation/non_local_branch_test.toit test_nested tests/type_propagation/non_local_branch_test.toit 0[029] - load [block] in test_nested tests/type_propagation/non_local_branch_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // {Null_} + 7[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // [[block]] -> {Null_} 10[089] - return null S2 0 [block] in test_nested tests/type_propagation/non_local_branch_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_nested tests/type_propagation/non_local_branch_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/non_local_branch_test.toit // [[block]] -> {} 10[040] - pop 2 12[083] - branch back T0 17[022] - load null @@ -83,13 +83,13 @@ id tests/type_propagation/non_local_branch_test.toit pick tests/type_propagation/non_local_branch_test.toit 0[026] - load smi 100 - 2[053] - invoke static random /core/utils.toit // {LargeInteger_|SmallInteger_} + 2[053] - invoke static random /core/utils.toit // [{SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[026] - load smi 50 - 7[063] - invoke lt // {True_|False_} + 7[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 8[088] - return S1 0 invoke tests/type_propagation/non_local_branch_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {Null_} + 1[055] - invoke block S1 // [[block]] -> {Null_} 3[089] - return null S1 1 diff --git a/tests/type_propagation/gold/non_local_return_test.gold b/tests/type_propagation/gold/non_local_return_test.gold index f5a5ca5e8..a7cb7a54a 100644 --- a/tests/type_propagation/gold/non_local_return_test.gold +++ b/tests/type_propagation/gold/non_local_return_test.gold @@ -7,7 +7,7 @@ main tests/type_propagation/non_local_return_test.toit test_simple tests/type_propagation/non_local_return_test.toit 0[029] - load [block] in test_simple tests/type_propagation/non_local_return_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // [[block]] -> {} 10[040] - pop 2 12[053] - invoke static unreachable /core/exceptions.toit 15[041] - pop 1 @@ -16,7 +16,7 @@ test_simple tests/type_propagation/non_local_return_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_simple tests/type_propagation/non_local_return_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // [[block]] -> {} 10[004] - store local, pop S1 12[088] - return S1 1 @@ -25,7 +25,7 @@ test_simple tests/type_propagation/non_local_return_test.toit 0[029] - load [block] in [block] in [block] in test_simple tests/type_propagation/non_local_return_test.toit 5[026] - load smi 3 7[038] - load block 1 - 9[058] - invoke virtual repeat // {} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {} 13[004] - store local, pop S1 15[088] - return S1 1 @@ -41,7 +41,7 @@ test_simple tests/type_propagation/non_local_return_test.toit test_continue tests/type_propagation/non_local_return_test.toit 0[029] - load [block] in test_continue tests/type_propagation/non_local_return_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // {String_} + 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // [[block]] -> {String_} 10[089] - return null S2 0 [block] in test_continue tests/type_propagation/non_local_return_test.toit @@ -49,7 +49,7 @@ test_continue tests/type_propagation/non_local_return_test.toit 0[029] - load [block] in [block] in test_continue tests/type_propagation/non_local_return_test.toit 5[026] - load smi 3 7[038] - load block 1 - 9[058] - invoke virtual repeat // {} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {} 13[004] - store local, pop S1 15[088] - return S1 1 @@ -63,5 +63,5 @@ test_continue tests/type_propagation/non_local_return_test.toit invoke tests/type_propagation/non_local_return_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {String_} + 1[055] - invoke block S1 // [[block]] -> {String_} 3[088] - return S1 1 diff --git a/tests/type_propagation/gold/non_local_return_test.gold-O2 b/tests/type_propagation/gold/non_local_return_test.gold-O2 index 8c9c56980..7f5fae4cb 100644 --- a/tests/type_propagation/gold/non_local_return_test.gold-O2 +++ b/tests/type_propagation/gold/non_local_return_test.gold-O2 @@ -7,14 +7,14 @@ main tests/type_propagation/non_local_return_test.toit test_simple tests/type_propagation/non_local_return_test.toit 0[029] - load [block] in test_simple tests/type_propagation/non_local_return_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // [[block]] -> {} 10[041] - pop 1 [block] in test_simple tests/type_propagation/non_local_return_test.toit - argument 0: [block] 0[029] - load [block] in [block] in test_simple tests/type_propagation/non_local_return_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // {} + 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // [[block]] -> {} 10[004] - store local, pop S1 12[088] - return S1 1 @@ -23,7 +23,7 @@ test_simple tests/type_propagation/non_local_return_test.toit 0[029] - load [block] in [block] in [block] in test_simple tests/type_propagation/non_local_return_test.toit 5[026] - load smi 3 7[038] - load block 1 - 9[058] - invoke virtual repeat // {} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {} 13[004] - store local, pop S1 15[088] - return S1 1 @@ -39,7 +39,7 @@ test_simple tests/type_propagation/non_local_return_test.toit test_continue tests/type_propagation/non_local_return_test.toit 0[029] - load [block] in test_continue tests/type_propagation/non_local_return_test.toit 5[038] - load block 0 - 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // {String_} + 7[053] - invoke static invoke tests/type_propagation/non_local_return_test.toit // [[block]] -> {String_} 10[089] - return null S2 0 [block] in test_continue tests/type_propagation/non_local_return_test.toit @@ -47,7 +47,7 @@ test_continue tests/type_propagation/non_local_return_test.toit 0[029] - load [block] in [block] in test_continue tests/type_propagation/non_local_return_test.toit 5[026] - load smi 3 7[038] - load block 1 - 9[058] - invoke virtual repeat // {} + 9[058] - invoke virtual repeat // [{SmallInteger_}, [block]] -> {} 13[004] - store local, pop S1 15[088] - return S1 1 @@ -61,5 +61,5 @@ test_continue tests/type_propagation/non_local_return_test.toit invoke tests/type_propagation/non_local_return_test.toit - argument 0: [block] 0[016] - load local 2 - 1[055] - invoke block S1 // {String_} + 1[055] - invoke block S1 // [[block]] -> {String_} 3[088] - return S1 1 diff --git a/tests/type_propagation/gold/null_equals_test.gold b/tests/type_propagation/gold/null_equals_test.gold index 3453579d8..5c8db9f4f 100644 --- a/tests/type_propagation/gold/null_equals_test.gold +++ b/tests/type_propagation/gold/null_equals_test.gold @@ -2,62 +2,62 @@ main tests/type_propagation/null_equals_test.toit 0[053] - invoke static obfuscate_null tests/type_propagation/null_equals_test.toit // {Null_} 3[014] - load local 0 4[022] - load null - 5[062] - invoke eq // {True_} - 6[053] - invoke static id tests/type_propagation/null_equals_test.toit // {True_} + 5[062] - invoke eq // [{Null_}, {Null_}] -> {True_} + 6[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{True_}] -> {True_} 9[041] - pop 1 10[022] - load null 11[015] - load local 1 - 12[062] - invoke eq // {True_} - 13[053] - invoke static id tests/type_propagation/null_equals_test.toit // {True_} + 12[062] - invoke eq // [{Null_}, {Null_}] -> {True_} + 13[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{True_}] -> {True_} 16[041] - pop 1 17[023] - load smi 0 18[022] - load null - 19[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 19[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 22[014] - load local 0 23[004] - store local, pop S1 - 25[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 25[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 28[015] - load local 1 - 29[062] - invoke eq // {False_} - 30[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 29[062] - invoke eq // [{List_}, {Null_}] -> {False_} + 30[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 33[002] - pop, load local S0 35[023] - load smi 0 36[022] - load null - 37[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 37[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 40[014] - load local 0 41[004] - store local, pop S1 - 43[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} - 46[062] - invoke eq // {False_} - 47[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 43[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} + 46[062] - invoke eq // [{Null_}, {List_}] -> {False_} + 47[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 50[041] - pop 1 51[042] - allocate instance A - 53[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} + 53[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} 56[042] - allocate instance A - 58[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} - 61[062] - invoke eq // {String_} - 62[053] - invoke static id tests/type_propagation/null_equals_test.toit // {String_} + 58[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} + 61[062] - invoke eq // [{A}, {A}] -> {String_} + 62[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{String_}] -> {String_} 65[041] - pop 1 66[042] - allocate instance A - 68[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} + 68[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} 71[022] - load null - 72[062] - invoke eq // {False_} - 73[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 72[062] - invoke eq // [{A}, {Null_}] -> {False_} + 73[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 76[041] - pop 1 77[042] - allocate instance A - 79[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} + 79[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} 82[015] - load local 1 - 83[062] - invoke eq // {False_} - 84[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 83[062] - invoke eq // [{A}, {Null_}] -> {False_} + 84[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 87[041] - pop 1 88[022] - load null 89[042] - allocate instance A - 91[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} - 94[062] - invoke eq // {False_} - 95[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 91[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} + 94[062] - invoke eq // [{Null_}, {A}] -> {False_} + 95[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 98[002] - pop, load local S0 100[042] - allocate instance A -102[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} -105[062] - invoke eq // {False_} -106[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} +102[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} +105[062] - invoke eq // [{Null_}, {A}] -> {False_} +106[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 109[089] - return null S2 0 obfuscate_null tests/type_propagation/null_equals_test.toit diff --git a/tests/type_propagation/gold/null_equals_test.gold-O2 b/tests/type_propagation/gold/null_equals_test.gold-O2 index b78988d8c..e65eeb20c 100644 --- a/tests/type_propagation/gold/null_equals_test.gold-O2 +++ b/tests/type_propagation/gold/null_equals_test.gold-O2 @@ -2,62 +2,62 @@ main tests/type_propagation/null_equals_test.toit 0[053] - invoke static obfuscate_null tests/type_propagation/null_equals_test.toit // {Null_} 3[014] - load local 0 4[022] - load null - 5[062] - invoke eq // {True_} - 6[053] - invoke static id tests/type_propagation/null_equals_test.toit // {True_} + 5[062] - invoke eq // [{Null_}, {Null_}] -> {True_} + 6[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{True_}] -> {True_} 9[041] - pop 1 10[022] - load null 11[015] - load local 1 - 12[062] - invoke eq // {True_} - 13[053] - invoke static id tests/type_propagation/null_equals_test.toit // {True_} + 12[062] - invoke eq // [{Null_}, {Null_}] -> {True_} + 13[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{True_}] -> {True_} 16[041] - pop 1 17[023] - load smi 0 18[022] - load null - 19[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 19[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 22[014] - load local 0 23[004] - store local, pop S1 - 25[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} + 25[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} 28[015] - load local 1 - 29[062] - invoke eq // {False_} - 30[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 29[062] - invoke eq // [{List_}, {Null_}] -> {False_} + 30[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 33[002] - pop, load local S0 35[023] - load smi 0 36[022] - load null - 37[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 37[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 40[014] - load local 0 41[004] - store local, pop S1 - 43[053] - invoke static create_list_literal_from_array_ /core/collections.toit // {List_} - 46[062] - invoke eq // {False_} - 47[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 43[053] - invoke static create_list_literal_from_array_ /core/collections.toit // [{LargeArray_|SmallArray_}] -> {List_} + 46[062] - invoke eq // [{Null_}, {List_}] -> {False_} + 47[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 50[041] - pop 1 51[042] - allocate instance A - 53[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} + 53[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} 56[042] - allocate instance A - 58[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} - 61[062] - invoke eq // {String_} - 62[053] - invoke static id tests/type_propagation/null_equals_test.toit // {String_} + 58[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} + 61[062] - invoke eq // [{A}, {A}] -> {String_} + 62[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{String_}] -> {String_} 65[041] - pop 1 66[042] - allocate instance A - 68[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} + 68[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} 71[022] - load null - 72[062] - invoke eq // {False_} - 73[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 72[062] - invoke eq // [{A}, {Null_}] -> {False_} + 73[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 76[041] - pop 1 77[042] - allocate instance A - 79[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} + 79[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} 82[015] - load local 1 - 83[062] - invoke eq // {False_} - 84[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 83[062] - invoke eq // [{A}, {Null_}] -> {False_} + 84[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 87[041] - pop 1 88[022] - load null 89[042] - allocate instance A - 91[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} - 94[062] - invoke eq // {False_} - 95[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} + 91[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} + 94[062] - invoke eq // [{Null_}, {A}] -> {False_} + 95[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 98[002] - pop, load local S0 100[042] - allocate instance A -102[053] - invoke static A tests/type_propagation/null_equals_test.toit // {A} -105[062] - invoke eq // {False_} -106[053] - invoke static id tests/type_propagation/null_equals_test.toit // {False_} +102[053] - invoke static A tests/type_propagation/null_equals_test.toit // [{A}] -> {A} +105[062] - invoke eq // [{Null_}, {A}] -> {False_} +106[053] - invoke static id tests/type_propagation/null_equals_test.toit // [{False_}] -> {False_} 109[089] - return null S2 0 obfuscate_null tests/type_propagation/null_equals_test.toit diff --git a/tests/type_propagation/gold/richards_test.gold b/tests/type_propagation/gold/richards_test.gold index 8c6a55051..de2c4cd1c 100644 --- a/tests/type_propagation/gold/richards_test.gold +++ b/tests/type_propagation/gold/richards_test.gold @@ -4,116 +4,116 @@ main tests/type_propagation/richards_test.toit run_richards tests/type_propagation/richards_test.toit 0[042] - allocate instance Scheduler - 2[053] - invoke static Scheduler tests/type_propagation/richards_test.toit // {Scheduler} + 2[053] - invoke static Scheduler tests/type_propagation/richards_test.toit // [{Scheduler}] -> {Scheduler} 5[014] - load local 0 6[023] - load smi 0 7[023] - load smi 0 8[022] - load null 9[027] - load smi 10000 - 12[053] - invoke static Scheduler.add_idle_task tests/type_propagation/richards_test.toit // {Null_} + 12[053] - invoke static Scheduler.add_idle_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}, {SmallInteger_}] -> {Null_} 15[041] - pop 1 16[042] - allocate instance Packet 18[022] - load null 19[025] - load smi 1 20[025] - load smi 1 - 21[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 21[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Null_}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 24[042] - allocate instance Packet 26[015] - load local 1 27[025] - load smi 1 28[025] - load smi 1 - 29[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 29[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 32[004] - store local, pop S1 34[015] - load local 1 35[025] - load smi 1 36[027] - load smi 1000 39[017] - load local 3 - 40[053] - invoke static Scheduler.add_worker_task tests/type_propagation/richards_test.toit // {Null_} + 40[053] - invoke static Scheduler.add_worker_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}] -> {Null_} 43[041] - pop 1 44[042] - allocate instance Packet 46[022] - load null 47[026] - load smi 4 49[023] - load smi 0 - 50[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 50[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Null_}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 53[004] - store local, pop S1 55[042] - allocate instance Packet 57[015] - load local 1 58[026] - load smi 4 60[023] - load smi 0 - 61[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 61[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 64[004] - store local, pop S1 66[042] - allocate instance Packet 68[015] - load local 1 69[026] - load smi 4 71[023] - load smi 0 - 72[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 72[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 75[004] - store local, pop S1 77[015] - load local 1 78[026] - load smi 2 80[027] - load smi 2000 83[017] - load local 3 - 84[053] - invoke static Scheduler.add_handler_task tests/type_propagation/richards_test.toit // {Null_} + 84[053] - invoke static Scheduler.add_handler_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}] -> {Null_} 87[041] - pop 1 88[042] - allocate instance Packet 90[022] - load null 91[026] - load smi 5 93[023] - load smi 0 - 94[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 94[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Null_}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 97[004] - store local, pop S1 99[042] - allocate instance Packet 101[015] - load local 1 102[026] - load smi 5 104[023] - load smi 0 -105[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} +105[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 108[004] - store local, pop S1 110[042] - allocate instance Packet 112[015] - load local 1 113[026] - load smi 5 115[023] - load smi 0 -116[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} +116[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 119[004] - store local, pop S1 121[015] - load local 1 122[026] - load smi 3 124[027] - load smi 3000 127[017] - load local 3 -128[053] - invoke static Scheduler.add_handler_task tests/type_propagation/richards_test.toit // {Null_} +128[053] - invoke static Scheduler.add_handler_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}] -> {Null_} 131[002] - pop, load local S1 133[026] - load smi 4 135[027] - load smi 4000 138[022] - load null -139[053] - invoke static Scheduler.add_device_task tests/type_propagation/richards_test.toit // {Null_} +139[053] - invoke static Scheduler.add_device_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}] -> {Null_} 142[002] - pop, load local S1 144[026] - load smi 5 146[027] - load smi 5000 149[022] - load null -150[053] - invoke static Scheduler.add_device_task tests/type_propagation/richards_test.toit // {Null_} +150[053] - invoke static Scheduler.add_device_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}] -> {Null_} 153[002] - pop, load local S1 -155[053] - invoke static Scheduler.schedule tests/type_propagation/richards_test.toit // {Null_} +155[053] - invoke static Scheduler.schedule tests/type_propagation/richards_test.toit // [{Scheduler}] -> {Null_} 158[041] - pop 1 159[029] - load [block] in run_richards tests/type_propagation/richards_test.toit 164[038] - load block 0 -166[053] - invoke static assert_ /core/assert_.toit // {Null_} +166[053] - invoke static assert_ /core/assert_.toit // [[block]] -> {Null_} 169[040] - pop 2 171[029] - load [block] in run_richards tests/type_propagation/richards_test.toit 176[038] - load block 0 -178[053] - invoke static assert_ /core/assert_.toit // {Null_} +178[053] - invoke static assert_ /core/assert_.toit // [[block]] -> {Null_} 181[089] - return null S4 0 [block] in run_richards tests/type_propagation/richards_test.toit - argument 0: [block] 0[016] - load local 2 1[005] - load outer S2 // {Scheduler} - 3[007] - load field 0 // {Null_|LargeInteger_|SmallInteger_} + 3[007] - load field 0 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_} 5[027] - load smi 23246 - 8[062] - invoke eq // {True_|False_} + 8[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 9[088] - return S1 1 [block] in run_richards tests/type_propagation/richards_test.toit - argument 0: [block] 0[016] - load local 2 1[005] - load outer S2 // {Scheduler} - 3[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} + 3[007] - load field 1 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_} 5[027] - load smi 9297 - 8[062] - invoke eq // {True_|False_} + 8[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 9[088] - return S1 1 Scheduler tests/type_propagation/richards_test.toit @@ -127,7 +127,7 @@ Scheduler tests/type_propagation/richards_test.toit 8[016] - load local 2 9[026] - load smi 6 11[022] - load null - 12[053] - invoke static List /core/collections.toit // {List_} + 12[053] - invoke static List /core/collections.toit // [{SmallInteger_}, {Null_}] -> {List_} 15[013] - store field, pop 2 17[016] - load local 2 18[088] - return S1 1 @@ -152,8 +152,8 @@ Scheduler.add_idle_task tests/type_propagation/richards_test.toit 20[000] - load local S11 22[025] - load smi 1 23[000] - load local S9 - 25[053] - invoke static IdleTask tests/type_propagation/richards_test.toit // {IdleTask} - 28[053] - invoke static Scheduler.add_running_task tests/type_propagation/richards_test.toit // {Null_} + 25[053] - invoke static IdleTask tests/type_propagation/richards_test.toit // [{IdleTask}, {Scheduler}, {SmallInteger_}, {SmallInteger_}] -> {IdleTask} + 28[053] - invoke static Scheduler.add_running_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}, {IdleTask}] -> {Null_} 31[089] - return null S1 5 Scheduler.add_worker_task tests/type_propagation/richards_test.toit @@ -172,8 +172,8 @@ Scheduler.add_worker_task tests/type_propagation/richards_test.toit 12[000] - load local S10 14[026] - load smi 2 16[023] - load smi 0 - 17[053] - invoke static WorkerTask tests/type_propagation/richards_test.toit // {WorkerTask} - 20[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // {Null_} + 17[053] - invoke static WorkerTask tests/type_propagation/richards_test.toit // [{WorkerTask}, {Scheduler}, {SmallInteger_}, {SmallInteger_}] -> {WorkerTask} + 20[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}, {WorkerTask}] -> {Null_} 23[089] - return null S1 4 Scheduler.add_handler_task tests/type_propagation/richards_test.toit @@ -190,8 +190,8 @@ Scheduler.add_handler_task tests/type_propagation/richards_test.toit 9[019] - load local 5 10[042] - allocate instance HandlerTask 12[000] - load local S10 - 14[053] - invoke static HandlerTask tests/type_propagation/richards_test.toit // {HandlerTask} - 17[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // {Null_} + 14[053] - invoke static HandlerTask tests/type_propagation/richards_test.toit // [{HandlerTask}, {Scheduler}] -> {HandlerTask} + 17[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}, {HandlerTask}] -> {Null_} 20[089] - return null S1 4 Scheduler.add_device_task tests/type_propagation/richards_test.toit @@ -209,8 +209,8 @@ Scheduler.add_device_task tests/type_propagation/richards_test.toit 11[019] - load local 5 12[042] - allocate instance DeviceTask 14[000] - load local S10 - 16[053] - invoke static DeviceTask tests/type_propagation/richards_test.toit // {DeviceTask} - 19[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // {Null_} + 16[053] - invoke static DeviceTask tests/type_propagation/richards_test.toit // [{DeviceTask}, {Scheduler}] -> {DeviceTask} + 19[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}, {DeviceTask}] -> {Null_} 22[089] - return null S1 4 Scheduler.add_running_task tests/type_propagation/richards_test.toit @@ -228,9 +228,9 @@ Scheduler.add_running_task tests/type_propagation/richards_test.toit 11[000] - load local S6 13[000] - load local S6 15[000] - load local S6 - 17[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // {Null_} - 20[010] - pop, load field local 70 // {*} - 22[058] - invoke virtual set_running // {Null_} + 17[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}, {IdleTask}] -> {Null_} + 20[010] - pop, load field local 70 // [{Scheduler}] -> {*} + 22[058] - invoke virtual set_running // [{*}] -> {Null_} 26[089] - return null S1 5 Scheduler.add_task tests/type_propagation/richards_test.toit @@ -245,142 +245,142 @@ Scheduler.add_task tests/type_propagation/richards_test.toit 5[048] - as class Packet?(40 - 41) // {True_} 7[002] - pop, load local S6 9[042] - allocate instance TaskControlBlock - 11[009] - load field local 56 // {*} + 11[009] - load field local 56 // [{Scheduler}] -> {*} 13[000] - load local S8 15[000] - load local S8 17[000] - load local S8 19[000] - load local S8 - 21[053] - invoke static TaskControlBlock tests/type_propagation/richards_test.toit // {TaskControlBlock} + 21[053] - invoke static TaskControlBlock tests/type_propagation/richards_test.toit // [{TaskControlBlock}, {*}, {SmallInteger_}, {SmallInteger_}, {Null_|Packet}, {HandlerTask|WorkerTask|DeviceTask|IdleTask}] -> {TaskControlBlock} 24[013] - store field, pop 4 26[000] - load local S6 - 28[009] - load field local 71 // {*} + 28[009] - load field local 71 // [{Scheduler}] -> {*} 30[013] - store field, pop 3 - 32[009] - load field local 38 // {Null_|List_} + 32[009] - load field local 38 // [{Scheduler}] -> {Null_|List_} 34[000] - load local S6 - 36[009] - load field local 72 // {*} - 38[079] - invoke at_put // {*} + 36[009] - load field local 72 // [{Scheduler}] -> {*} + 38[079] - invoke at_put // [{Null_|List_}, {SmallInteger_}, {*}] -> {*} 39[089] - return null S1 5 Scheduler.schedule tests/type_propagation/richards_test.toit - argument 0: {Scheduler} 0[016] - load local 2 - 1[009] - load field local 51 // {*} + 1[009] - load field local 51 // [{Scheduler}] -> {*} 3[013] - store field, pop 4 - 5[009] - load field local 66 // {*} + 5[009] - load field local 66 // [{Scheduler}] -> {*} 7[082] - branch if false T52 - 10[009] - load field local 66 // {*} - 12[058] - invoke virtual is_held_or_suspended // {True_|False_} + 10[009] - load field local 66 // [{Scheduler}] -> {*} + 12[058] - invoke virtual is_held_or_suspended // [{*}] -> {True_|False_} 16[082] - branch if false T30 19[016] - load local 2 - 20[009] - load field local 67 // {*} - 22[060] - invoke virtual get link // {Null_|Packet|TaskControlBlock} + 20[009] - load field local 67 // [{Scheduler}] -> {*} + 22[060] - invoke virtual get link // [{*}] -> {Null_|Packet|TaskControlBlock} 25[013] - store field, pop 4 27[080] - branch T47 30[016] - load local 2 - 31[009] - load field local 67 // {*} - 33[060] - invoke virtual get id // {Null_|LargeInteger_|SmallInteger_|ByteArray_} + 31[009] - load field local 67 // [{Scheduler}] -> {*} + 33[060] - invoke virtual get id // [{*}] -> {Null_|LargeInteger_|SmallInteger_|ByteArray_} 36[013] - store field, pop 5 38[016] - load local 2 - 39[009] - load field local 67 // {*} - 41[058] - invoke virtual run // {*} + 39[009] - load field local 67 // [{Scheduler}] -> {*} + 41[058] - invoke virtual run // [{*}] -> {*} 45[013] - store field, pop 4 47[083] - branch back T5 52[089] - return null S0 1 Scheduler.hold_current tests/type_propagation/richards_test.toit - argument 0: {Scheduler} - 0[009] - load field local 18 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 18 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_} 2[017] - load local 3 3[015] - load local 1 4[025] - load smi 1 - 5[073] - invoke add // {LargeInteger_|SmallInteger_} + 5[073] - invoke add // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[013] - store field, pop 1 - 8[010] - pop, load field local 66 // {*} - 10[058] - invoke virtual mark_as_held // {Null_} - 14[010] - pop, load field local 66 // {*} - 16[060] - invoke virtual get link // {Null_|Packet|TaskControlBlock} + 8[010] - pop, load field local 66 // [{Scheduler}] -> {*} + 10[058] - invoke virtual mark_as_held // [{*}] -> {Null_} + 14[010] - pop, load field local 66 // [{Scheduler}] -> {*} + 16[060] - invoke virtual get link // [{*}] -> {Null_|Packet|TaskControlBlock} 19[088] - return S1 1 Scheduler.suspend_current tests/type_propagation/richards_test.toit - argument 0: {Scheduler} - 0[009] - load field local 66 // {*} - 2[058] - invoke virtual mark_as_suspended // {Null_} - 6[010] - pop, load field local 66 // {*} + 0[009] - load field local 66 // [{Scheduler}] -> {*} + 2[058] - invoke virtual mark_as_suspended // [{*}] -> {Null_} + 6[010] - pop, load field local 66 // [{Scheduler}] -> {*} 8[088] - return S1 1 Scheduler.release tests/type_propagation/richards_test.toit - argument 0: {Scheduler} - argument 1: {SmallInteger_} - 0[009] - load field local 35 // {Null_|List_} + 0[009] - load field local 35 // [{Scheduler}] -> {Null_|List_} 2[017] - load local 3 - 3[078] - invoke at // {*} + 3[078] - invoke at // [{Null_|List_}, {SmallInteger_}] -> {*} 4[014] - load local 0 5[081] - branch if true T12 8[014] - load local 0 9[088] - return S2 2 12[014] - load local 0 - 13[058] - invoke virtual mark_as_not_held // {Null_} + 13[058] - invoke virtual mark_as_not_held // [{*}] -> {Null_} 17[002] - pop, load local S0 - 19[060] - invoke virtual get priority // {Null_|SmallInteger_} - 22[009] - load field local 69 // {*} - 24[060] - invoke virtual get priority // {Null_|SmallInteger_} - 27[064] - invoke gt // {True_|False_} + 19[060] - invoke virtual get priority // [{*}] -> {Null_|SmallInteger_} + 22[009] - load field local 69 // [{Scheduler}] -> {*} + 24[060] - invoke virtual get priority // [{*}] -> {Null_|SmallInteger_} + 27[064] - invoke gt // [{Null_|SmallInteger_}, {Null_|SmallInteger_}] -> {True_|False_} 28[082] - branch if false T38 31[014] - load local 0 32[088] - return S2 2 35[080] - branch T43 - 38[009] - load field local 68 // {*} + 38[009] - load field local 68 // [{Scheduler}] -> {*} 40[088] - return S2 2 Scheduler.queue tests/type_propagation/richards_test.toit - argument 0: {Scheduler} - argument 1: {Null_|Packet} 0[052] - load local, as class, pop 2 - Packet(40 - 41) // {True_|False_} - 2[009] - load field local 35 // {Null_|List_} - 4[009] - load field local 19 // {Null_|LargeInteger_|SmallInteger_} - 6[078] - invoke at // {*} + 2[009] - load field local 35 // [{Scheduler}] -> {Null_|List_} + 4[009] - load field local 19 // [{Packet}] -> {Null_|LargeInteger_|SmallInteger_} + 6[078] - invoke at // [{Null_|List_}, {Null_|LargeInteger_|SmallInteger_}] -> {*} 7[014] - load local 0 8[081] - branch if true T15 11[014] - load local 0 12[088] - return S2 2 - 15[009] - load field local 4 // {Null_|LargeInteger_|SmallInteger_} + 15[009] - load field local 4 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_} 17[019] - load local 5 18[015] - load local 1 19[025] - load smi 1 - 20[073] - invoke add // {LargeInteger_|SmallInteger_} + 20[073] - invoke add // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 21[013] - store field, pop 0 23[002] - pop, load local S3 25[022] - load null 26[048] - as class Packet?(40 - 41) // {True_} 28[013] - store field, pop 0 30[017] - load local 3 - 31[009] - load field local 85 // {Null_|LargeInteger_|SmallInteger_|ByteArray_} + 31[009] - load field local 85 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_|ByteArray_} 33[048] - as class LargeInteger_(22 - 24) // {True_|False_} 35[013] - store field, pop 1 37[014] - load local 0 - 38[009] - load field local 69 // {*} + 38[009] - load field local 69 // [{Scheduler}] -> {*} 40[019] - load local 5 - 41[058] - invoke virtual check_priority_add // {*} + 41[058] - invoke virtual check_priority_add // [{*}, {*}, {Packet}] -> {*} 45[088] - return S2 2 STATE_NOT_HELD tests/type_propagation/richards_test.toit 0[026] - load smi 4 - 2[058] - invoke virtual ~ // {SmallInteger_} + 2[058] - invoke virtual ~ // [{SmallInteger_}] -> {SmallInteger_} 6[088] - return S1 0 TaskControlBlock.link tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - 0[009] - load field local 2 // {Null_|TaskControlBlock} + 0[009] - load field local 2 // [{TaskControlBlock}] -> {Null_|TaskControlBlock} 2[088] - return S1 1 TaskControlBlock.id tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - 0[009] - load field local 18 // {Null_|SmallInteger_} + 0[009] - load field local 18 // [{TaskControlBlock}] -> {Null_|SmallInteger_} 2[088] - return S1 1 TaskControlBlock.priority tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - 0[009] - load field local 34 // {Null_|SmallInteger_} + 0[009] - load field local 34 // [{TaskControlBlock}] -> {Null_|SmallInteger_} 2[088] - return S1 1 TaskControlBlock tests/type_propagation/richards_test.toit @@ -414,7 +414,7 @@ TaskControlBlock tests/type_propagation/richards_test.toit 38[013] - store field, pop 5 40[000] - load local S7 42[026] - load smi 2 - 44[009] - load field local 57 // {Null_|Packet} + 44[009] - load field local 57 // [{TaskControlBlock}] -> {Null_|Packet} 46[082] - branch if false T52 49[041] - pop 1 50[026] - load smi 3 @@ -433,9 +433,9 @@ TaskControlBlock.set_running tests/type_propagation/richards_test.toit TaskControlBlock.mark_as_not_held tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[016] - load local 2 - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[033] - load global var lazy G0 // {SmallInteger_} - 5[069] - invoke bit and // {LargeInteger_|SmallInteger_} + 5[069] - invoke bit and // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[048] - as class LargeInteger_(22 - 24) // {True_} 8[013] - store field, pop 5 10[089] - return null S0 1 @@ -443,37 +443,37 @@ TaskControlBlock.mark_as_not_held tests/type_propagation/richards_test.toit TaskControlBlock.mark_as_held tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[016] - load local 2 - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[026] - load smi 4 - 5[067] - invoke bit or // {LargeInteger_|SmallInteger_} + 5[067] - invoke bit or // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[048] - as class LargeInteger_(22 - 24) // {True_} 8[013] - store field, pop 5 10[089] - return null S0 1 TaskControlBlock.is_held_or_suspended tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - 0[009] - load field local 82 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 82 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 2[026] - load smi 4 - 4[069] - invoke bit and // {LargeInteger_|SmallInteger_} + 4[069] - invoke bit and // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[023] - load smi 0 - 6[062] - invoke eq // {True_|False_} + 6[062] - invoke eq // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 7[081] - branch if true T15 10[020] - load literal true 12[080] - branch T17 15[020] - load literal false 17[014] - load local 0 18[081] - branch if true T26 - 21[010] - pop, load field local 82 // {Null_|LargeInteger_|SmallInteger_} + 21[010] - pop, load field local 82 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 23[026] - load smi 2 - 25[062] - invoke eq // {True_|False_} + 25[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 26[088] - return S1 1 TaskControlBlock.mark_as_suspended tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[016] - load local 2 - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[026] - load smi 2 - 5[067] - invoke bit or // {LargeInteger_|SmallInteger_} + 5[067] - invoke bit or // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[048] - as class LargeInteger_(22 - 24) // {True_} 8[013] - store field, pop 5 10[089] - return null S0 1 @@ -481,9 +481,9 @@ TaskControlBlock.mark_as_suspended tests/type_propagation/richards_test.toit TaskControlBlock.mark_as_runnable tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[016] - load local 2 - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[025] - load smi 1 - 4[067] - invoke bit or // {LargeInteger_|SmallInteger_} + 4[067] - invoke bit or // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[048] - as class LargeInteger_(22 - 24) // {True_} 7[013] - store field, pop 5 9[089] - return null S0 1 @@ -491,54 +491,54 @@ TaskControlBlock.mark_as_runnable tests/type_propagation/richards_test.toit TaskControlBlock.run tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[022] - load null - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[026] - load smi 3 - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 6[082] - branch if false T35 - 9[009] - load field local 51 // {Null_|Packet} + 9[009] - load field local 51 // [{TaskControlBlock}] -> {Null_|Packet} 11[004] - store local, pop S1 13[017] - load local 3 14[015] - load local 1 - 15[060] - invoke virtual get link // {Null_|Packet} + 15[060] - invoke virtual get link // [{Null_|Packet}] -> {Null_|Packet} 18[048] - as class Packet?(40 - 41) // {True_} 20[013] - store field, pop 3 22[017] - load local 3 23[023] - load smi 0 - 24[009] - load field local 53 // {Null_|Packet} + 24[009] - load field local 53 // [{TaskControlBlock}] -> {Null_|Packet} 26[082] - branch if false T31 29[041] - pop 1 30[025] - load smi 1 31[048] - as class LargeInteger_(22 - 24) // {True_} 33[013] - store field, pop 5 - 35[009] - load field local 67 // {Null_|HandlerTask|WorkerTask|DeviceTask|IdleTask} + 35[009] - load field local 67 // [{TaskControlBlock}] -> {Null_|HandlerTask|WorkerTask|DeviceTask|IdleTask} 37[015] - load local 1 - 38[058] - invoke virtual run // {*} + 38[058] - invoke virtual run // [{Null_|HandlerTask|WorkerTask|DeviceTask|IdleTask}, {Null_|Packet}] -> {*} 42[088] - return S2 1 TaskControlBlock.check_priority_add tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - argument 1: {*} - argument 2: {Packet} - 0[009] - load field local 52 // {Null_|Packet} + 0[009] - load field local 52 // [{TaskControlBlock}] -> {Null_|Packet} 2[081] - branch if true T32 5[018] - load local 4 6[017] - load local 3 7[048] - as class Packet?(40 - 41) // {True_} 9[013] - store field, pop 3 11[018] - load local 4 - 12[053] - invoke static TaskControlBlock.mark_as_runnable tests/type_propagation/richards_test.toit // {Null_} - 15[010] - pop, load field local 36 // {Null_|SmallInteger_} + 12[053] - invoke static TaskControlBlock.mark_as_runnable tests/type_propagation/richards_test.toit // [{TaskControlBlock}] -> {Null_} + 15[010] - pop, load field local 36 // [{TaskControlBlock}] -> {Null_|SmallInteger_} 17[018] - load local 4 - 18[060] - invoke virtual get priority // {Null_|SmallInteger_} - 21[064] - invoke gt // {True_|False_} + 18[060] - invoke virtual get priority // [{*}] -> {Null_|SmallInteger_} + 21[064] - invoke gt // [{Null_|SmallInteger_}, {Null_|SmallInteger_}] -> {True_|False_} 22[082] - branch if false T29 25[018] - load local 4 26[088] - return S1 3 29[080] - branch T44 32[018] - load local 4 33[017] - load local 3 - 34[009] - load field local 54 // {Null_|Packet} - 36[058] - invoke virtual add_to // {Packet} + 34[009] - load field local 54 // [{TaskControlBlock}] -> {Null_|Packet} + 36[058] - invoke virtual add_to // [{Packet}, {Null_|Packet}] -> {Packet} 40[048] - as class Packet?(40 - 41) // {True_} 42[013] - store field, pop 3 44[017] - load local 3 @@ -567,48 +567,48 @@ IdleTask tests/type_propagation/richards_test.toit IdleTask.run tests/type_propagation/richards_test.toit - argument 0: {IdleTask} - argument 1: {Null_|Packet} - 0[009] - load field local 35 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 35 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 2[018] - load local 4 3[015] - load local 1 4[025] - load smi 1 - 5[074] - invoke sub // {LargeInteger_|SmallInteger_} + 5[074] - invoke sub // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[048] - as class LargeInteger_(22 - 24) // {True_} 8[013] - store field, pop 2 - 10[010] - pop, load field local 35 // {Null_|LargeInteger_|SmallInteger_} + 10[010] - pop, load field local 35 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 12[023] - load smi 0 - 13[062] - invoke eq // {True_|False_} + 13[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 14[082] - branch if false T25 - 17[009] - load field local 3 // {Null_|Scheduler} - 19[053] - invoke static Scheduler.hold_current tests/type_propagation/richards_test.toit // {Null_|Packet|TaskControlBlock} + 17[009] - load field local 3 // [{IdleTask}] -> {Null_|Scheduler} + 19[053] - invoke static Scheduler.hold_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {Null_|Packet|TaskControlBlock} 22[088] - return S1 2 - 25[009] - load field local 19 // {Null_|LargeInteger_|SmallInteger_} + 25[009] - load field local 19 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 27[025] - load smi 1 - 28[069] - invoke bit and // {LargeInteger_|SmallInteger_} + 28[069] - invoke bit and // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 29[023] - load smi 0 - 30[062] - invoke eq // {True_|False_} + 30[062] - invoke eq // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 31[082] - branch if false T56 34[017] - load local 3 - 35[009] - load field local 20 // {Null_|LargeInteger_|SmallInteger_} + 35[009] - load field local 20 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 37[025] - load smi 1 - 38[071] - invoke bit shr // {LargeInteger_|SmallInteger_} + 38[071] - invoke bit shr // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 39[048] - as class LargeInteger_(22 - 24) // {True_} 41[013] - store field, pop 1 - 43[009] - load field local 3 // {Null_|Scheduler} + 43[009] - load field local 3 // [{IdleTask}] -> {Null_|Scheduler} 45[026] - load smi 4 - 47[053] - invoke static Scheduler.release tests/type_propagation/richards_test.toit // {*} + 47[053] - invoke static Scheduler.release tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {SmallInteger_}] -> {*} 50[088] - return S1 2 53[080] - branch T79 56[017] - load local 3 - 57[009] - load field local 20 // {Null_|LargeInteger_|SmallInteger_} + 57[009] - load field local 20 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 59[025] - load smi 1 - 60[071] - invoke bit shr // {LargeInteger_|SmallInteger_} + 60[071] - invoke bit shr // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 61[027] - load smi 53256 - 64[068] - invoke bit xor // {LargeInteger_|SmallInteger_} + 64[068] - invoke bit xor // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 65[048] - as class LargeInteger_(22 - 24) // {True_} 67[013] - store field, pop 1 - 69[009] - load field local 3 // {Null_|Scheduler} + 69[009] - load field local 3 // [{IdleTask}] -> {Null_|Scheduler} 71[026] - load smi 5 - 73[053] - invoke static Scheduler.release tests/type_propagation/richards_test.toit // {*} + 73[053] - invoke static Scheduler.release tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {SmallInteger_}] -> {*} 76[088] - return S1 2 DeviceTask tests/type_propagation/richards_test.toit @@ -626,25 +626,25 @@ DeviceTask.run tests/type_propagation/richards_test.toit - argument 1: {Null_|Packet} 0[016] - load local 2 1[081] - branch if true T35 - 4[009] - load field local 19 // {Null_|Packet} + 4[009] - load field local 19 // [{DeviceTask}] -> {Null_|Packet} 6[081] - branch if true T17 - 9[009] - load field local 3 // {Null_|Scheduler} - 11[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // {*} + 9[009] - load field local 3 // [{DeviceTask}] -> {Null_|Scheduler} + 11[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {*} 14[088] - return S1 2 - 17[009] - load field local 19 // {Null_|Packet} + 17[009] - load field local 19 // [{DeviceTask}] -> {Null_|Packet} 19[018] - load local 4 20[022] - load null 21[013] - store field, pop 1 - 23[009] - load field local 4 // {Null_|Scheduler} + 23[009] - load field local 4 // [{DeviceTask}] -> {Null_|Scheduler} 25[015] - load local 1 - 26[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // {*} + 26[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {Null_|Packet}] -> {*} 29[088] - return S2 2 32[080] - branch T47 35[017] - load local 3 36[017] - load local 3 37[013] - store field, pop 1 - 39[009] - load field local 3 // {Null_|Scheduler} - 41[053] - invoke static Scheduler.hold_current tests/type_propagation/richards_test.toit // {Null_|Packet|TaskControlBlock} + 39[009] - load field local 3 // [{DeviceTask}] -> {Null_|Scheduler} + 41[053] - invoke static Scheduler.hold_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {Null_|Packet|TaskControlBlock} 44[088] - return S1 2 WorkerTask tests/type_propagation/richards_test.toit @@ -672,60 +672,60 @@ WorkerTask.run tests/type_propagation/richards_test.toit - argument 1: {Null_|Packet} 0[016] - load local 2 1[081] - branch if true T12 - 4[009] - load field local 3 // {Null_|Scheduler} - 6[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // {*} + 4[009] - load field local 3 // [{WorkerTask}] -> {Null_|Scheduler} + 6[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {*} 9[088] - return S1 2 12[017] - load local 3 13[026] - load smi 2 - 15[009] - load field local 21 // {Null_|SmallInteger_} + 15[009] - load field local 21 // [{WorkerTask}] -> {Null_|SmallInteger_} 17[026] - load smi 2 - 19[062] - invoke eq // {True_|False_} + 19[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 20[082] - branch if false T26 23[041] - pop 1 24[026] - load smi 3 26[048] - as class LargeInteger_(22 - 24) // {True_} 28[013] - store field, pop 1 30[016] - load local 2 - 31[009] - load field local 20 // {Null_|SmallInteger_} - 33[061] - invoke virtual set id // {SmallInteger_} + 31[009] - load field local 20 // [{WorkerTask}] -> {Null_|SmallInteger_} + 33[061] - invoke virtual set id // [{Null_|Packet}, {Null_|SmallInteger_}] -> {SmallInteger_} 36[002] - pop, load local S2 38[023] - load smi 0 - 39[061] - invoke virtual set a1 // {SmallInteger_} + 39[061] - invoke virtual set a1 // [{Packet}, {SmallInteger_}] -> {SmallInteger_} 42[041] - pop 1 43[023] - load smi 0 44[014] - load local 0 45[026] - load smi 4 - 47[063] - invoke lt // {True_|False_} + 47[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 48[082] - branch if false T93 51[018] - load local 4 - 52[009] - load field local 37 // {Null_|LargeInteger_|SmallInteger_} + 52[009] - load field local 37 // [{WorkerTask}] -> {Null_|LargeInteger_|SmallInteger_} 54[025] - load smi 1 - 55[073] - invoke add // {LargeInteger_|SmallInteger_} + 55[073] - invoke add // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 56[048] - as class LargeInteger_(22 - 24) // {True_} 58[011] - store field 2 60[026] - load smi 26 - 62[064] - invoke gt // {True_|False_} + 62[064] - invoke gt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 63[082] - branch if false T72 66[018] - load local 4 67[025] - load smi 1 68[048] - as class LargeInteger_(22 - 24) // {True_} 70[013] - store field, pop 2 72[017] - load local 3 - 73[060] - invoke virtual get a2 // {Null_|List_} + 73[060] - invoke virtual get a2 // [{Packet}] -> {Null_|List_} 76[015] - load local 1 - 77[009] - load field local 38 // {Null_|LargeInteger_|SmallInteger_} - 79[079] - invoke at_put // {*} + 77[009] - load field local 38 // [{WorkerTask}] -> {Null_|LargeInteger_|SmallInteger_} + 79[079] - invoke at_put // [{Null_|List_}, {LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {*} 80[041] - pop 1 81[014] - load local 0 82[014] - load local 0 83[025] - load smi 1 - 84[073] - invoke add // {LargeInteger_|SmallInteger_} + 84[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 85[004] - store local, pop S2 87[041] - pop 1 88[083] - branch back T44 - 93[010] - pop, load field local 3 // {Null_|Scheduler} + 93[010] - pop, load field local 3 // [{WorkerTask}] -> {Null_|Scheduler} 95[017] - load local 3 - 96[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // {*} + 96[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {Packet}] -> {*} 99[088] - return S1 2 HandlerTask tests/type_propagation/richards_test.toit @@ -744,64 +744,64 @@ HandlerTask.run tests/type_propagation/richards_test.toit 0[016] - load local 2 1[082] - branch if false T36 4[016] - load local 2 - 5[060] - invoke virtual get kind // {Null_|SmallInteger_} + 5[060] - invoke virtual get kind // [{Null_|Packet}] -> {Null_|SmallInteger_} 8[025] - load smi 1 - 9[062] - invoke eq // {True_|False_} + 9[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 10[082] - branch if false T26 13[017] - load local 3 14[017] - load local 3 - 15[009] - load field local 21 // {Null_|Packet} - 17[058] - invoke virtual add_to // {Packet} + 15[009] - load field local 21 // [{HandlerTask}] -> {Null_|Packet} + 17[058] - invoke virtual add_to // [{Packet}, {Null_|Packet}] -> {Packet} 21[013] - store field, pop 1 23[080] - branch T36 26[017] - load local 3 27[017] - load local 3 - 28[009] - load field local 37 // {Null_|Packet} - 30[058] - invoke virtual add_to // {Packet} + 28[009] - load field local 37 // [{HandlerTask}] -> {Null_|Packet} + 30[058] - invoke virtual add_to // [{Packet}, {Null_|Packet}] -> {Packet} 34[013] - store field, pop 2 - 36[009] - load field local 19 // {Null_|Packet} + 36[009] - load field local 19 // [{HandlerTask}] -> {Null_|Packet} 38[082] - branch if false T119 - 41[009] - load field local 19 // {Null_|Packet} - 43[060] - invoke virtual get a1 // {*} + 41[009] - load field local 19 // [{HandlerTask}] -> {Null_|Packet} + 43[060] - invoke virtual get a1 // [{Null_|Packet}] -> {*} 46[014] - load local 0 47[026] - load smi 4 - 49[063] - invoke lt // {True_|False_} + 49[063] - invoke lt // [{*}, {SmallInteger_}] -> {True_|False_} 50[082] - branch if false T99 - 53[009] - load field local 36 // {Null_|Packet} + 53[009] - load field local 36 // [{HandlerTask}] -> {Null_|Packet} 55[082] - branch if false T96 - 58[009] - load field local 36 // {Null_|Packet} + 58[009] - load field local 36 // [{HandlerTask}] -> {Null_|Packet} 60[019] - load local 5 - 61[009] - load field local 38 // {Null_|Packet} - 63[060] - invoke virtual get link // {Null_|Packet} + 61[009] - load field local 38 // [{HandlerTask}] -> {Null_|Packet} + 63[060] - invoke virtual get link // [{Null_|Packet}] -> {Null_|Packet} 66[013] - store field, pop 2 68[014] - load local 0 - 69[009] - load field local 22 // {Null_|Packet} - 71[060] - invoke virtual get a2 // {Null_|List_} + 69[009] - load field local 22 // [{HandlerTask}] -> {Null_|Packet} + 71[060] - invoke virtual get a2 // [{Null_|Packet}] -> {Null_|List_} 74[017] - load local 3 - 75[078] - invoke at // {*} - 76[061] - invoke virtual set a1 // {*} - 79[010] - pop, load field local 21 // {Null_|Packet} + 75[078] - invoke at // [{Null_|List_}, {*}] -> {*} + 76[061] - invoke virtual set a1 // [{Null_|Packet}, {*}] -> {*} + 79[010] - pop, load field local 21 // [{HandlerTask}] -> {Null_|Packet} 81[016] - load local 2 82[025] - load smi 1 - 83[073] - invoke add // {float|LargeInteger_|SmallInteger_} - 84[061] - invoke virtual set a1 // {float|LargeInteger_|SmallInteger_} - 87[010] - pop, load field local 5 // {Null_|Scheduler} + 83[073] - invoke add // [{*}, {SmallInteger_}] -> {float|LargeInteger_|SmallInteger_} + 84[061] - invoke virtual set a1 // [{Null_|Packet}, {float|LargeInteger_|SmallInteger_}] -> {float|LargeInteger_|SmallInteger_} + 87[010] - pop, load field local 5 // [{HandlerTask}] -> {Null_|Scheduler} 89[015] - load local 1 - 90[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // {*} + 90[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {Null_|Packet}] -> {*} 93[088] - return S3 2 96[080] - branch T118 - 99[009] - load field local 20 // {Null_|Packet} + 99[009] - load field local 20 // [{HandlerTask}] -> {Null_|Packet} 101[019] - load local 5 -102[009] - load field local 22 // {Null_|Packet} -104[060] - invoke virtual get link // {Null_|Packet} +102[009] - load field local 22 // [{HandlerTask}] -> {Null_|Packet} +104[060] - invoke virtual get link // [{Null_|Packet}] -> {Null_|Packet} 107[013] - store field, pop 1 -109[009] - load field local 5 // {Null_|Scheduler} +109[009] - load field local 5 // [{HandlerTask}] -> {Null_|Scheduler} 111[015] - load local 1 -112[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // {*} +112[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {Null_|Packet}] -> {*} 115[088] - return S3 2 118[041] - pop 1 -119[009] - load field local 3 // {Null_|Scheduler} -121[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // {*} +119[009] - load field local 3 // [{HandlerTask}] -> {Null_|Scheduler} +121[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {*} 124[088] - return S1 2 Packet tests/type_propagation/richards_test.toit @@ -827,14 +827,14 @@ Packet tests/type_propagation/richards_test.toit 22[019] - load local 5 23[026] - load smi 4 25[022] - load null - 26[053] - invoke static List /core/collections.toit // {List_} + 26[053] - invoke static List /core/collections.toit // [{SmallInteger_}, {Null_}] -> {List_} 29[013] - store field, pop 4 31[019] - load local 5 32[088] - return S1 4 Packet.link tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 2 // {Null_|Packet} + 0[009] - load field local 2 // [{Packet}] -> {Null_|Packet} 2[088] - return S1 1 Packet.link= tests/type_propagation/richards_test.toit @@ -849,7 +849,7 @@ Packet.link= tests/type_propagation/richards_test.toit Packet.id tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 18 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 18 // [{Packet}] -> {Null_|LargeInteger_|SmallInteger_} 2[088] - return S1 1 Packet.id= tests/type_propagation/richards_test.toit @@ -863,12 +863,12 @@ Packet.id= tests/type_propagation/richards_test.toit Packet.kind tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 34 // {Null_|SmallInteger_} + 0[009] - load field local 34 // [{Packet}] -> {Null_|SmallInteger_} 2[088] - return S1 1 Packet.a1 tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 50 // {*} + 0[009] - load field local 50 // [{Packet}] -> {*} 2[088] - return S1 1 Packet.a1= tests/type_propagation/richards_test.toit @@ -881,7 +881,7 @@ Packet.a1= tests/type_propagation/richards_test.toit Packet.a2 tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 66 // {Null_|List_} + 0[009] - load field local 66 // [{Packet}] -> {Null_|List_} 2[088] - return S1 1 Packet.add_to tests/type_propagation/richards_test.toit @@ -897,7 +897,7 @@ Packet.add_to tests/type_propagation/richards_test.toit 11[088] - return S1 2 14[016] - load local 2 15[014] - load local 0 - 16[060] - invoke virtual get link // {Null_|Packet} + 16[060] - invoke virtual get link // [{Null_|Packet}] -> {Null_|Packet} 19[014] - load local 0 20[081] - branch if true T27 23[041] - pop 1 @@ -908,6 +908,6 @@ Packet.add_to tests/type_propagation/richards_test.toit 31[083] - branch back T15 36[014] - load local 0 37[019] - load local 5 - 38[061] - invoke virtual set link // {Packet} + 38[061] - invoke virtual set link // [{Null_|Packet}, {Packet}] -> {Packet} 41[002] - pop, load local S3 43[088] - return S2 2 diff --git a/tests/type_propagation/gold/richards_test.gold-O2 b/tests/type_propagation/gold/richards_test.gold-O2 index 14924b859..e72f2961a 100644 --- a/tests/type_propagation/gold/richards_test.gold-O2 +++ b/tests/type_propagation/gold/richards_test.gold-O2 @@ -4,116 +4,116 @@ main tests/type_propagation/richards_test.toit run_richards tests/type_propagation/richards_test.toit 0[042] - allocate instance Scheduler - 2[053] - invoke static Scheduler tests/type_propagation/richards_test.toit // {Scheduler} + 2[053] - invoke static Scheduler tests/type_propagation/richards_test.toit // [{Scheduler}] -> {Scheduler} 5[014] - load local 0 6[023] - load smi 0 7[023] - load smi 0 8[022] - load null 9[027] - load smi 10000 - 12[053] - invoke static Scheduler.add_idle_task tests/type_propagation/richards_test.toit // {Null_} + 12[053] - invoke static Scheduler.add_idle_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}, {SmallInteger_}] -> {Null_} 15[041] - pop 1 16[042] - allocate instance Packet 18[022] - load null 19[025] - load smi 1 20[025] - load smi 1 - 21[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 21[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Null_}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 24[042] - allocate instance Packet 26[015] - load local 1 27[025] - load smi 1 28[025] - load smi 1 - 29[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 29[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 32[004] - store local, pop S1 34[015] - load local 1 35[025] - load smi 1 36[027] - load smi 1000 39[017] - load local 3 - 40[053] - invoke static Scheduler.add_worker_task tests/type_propagation/richards_test.toit // {Null_} + 40[053] - invoke static Scheduler.add_worker_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}] -> {Null_} 43[041] - pop 1 44[042] - allocate instance Packet 46[022] - load null 47[026] - load smi 4 49[023] - load smi 0 - 50[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 50[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Null_}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 53[004] - store local, pop S1 55[042] - allocate instance Packet 57[015] - load local 1 58[026] - load smi 4 60[023] - load smi 0 - 61[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 61[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 64[004] - store local, pop S1 66[042] - allocate instance Packet 68[015] - load local 1 69[026] - load smi 4 71[023] - load smi 0 - 72[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 72[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 75[004] - store local, pop S1 77[015] - load local 1 78[026] - load smi 2 80[027] - load smi 2000 83[017] - load local 3 - 84[053] - invoke static Scheduler.add_handler_task tests/type_propagation/richards_test.toit // {Null_} + 84[053] - invoke static Scheduler.add_handler_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}] -> {Null_} 87[041] - pop 1 88[042] - allocate instance Packet 90[022] - load null 91[026] - load smi 5 93[023] - load smi 0 - 94[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} + 94[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Null_}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 97[004] - store local, pop S1 99[042] - allocate instance Packet 101[015] - load local 1 102[026] - load smi 5 104[023] - load smi 0 -105[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} +105[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 108[004] - store local, pop S1 110[042] - allocate instance Packet 112[015] - load local 1 113[026] - load smi 5 115[023] - load smi 0 -116[053] - invoke static Packet tests/type_propagation/richards_test.toit // {Packet} +116[053] - invoke static Packet tests/type_propagation/richards_test.toit // [{Packet}, {Packet}, {SmallInteger_}, {SmallInteger_}] -> {Packet} 119[004] - store local, pop S1 121[015] - load local 1 122[026] - load smi 3 124[027] - load smi 3000 127[017] - load local 3 -128[053] - invoke static Scheduler.add_handler_task tests/type_propagation/richards_test.toit // {Null_} +128[053] - invoke static Scheduler.add_handler_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}] -> {Null_} 131[002] - pop, load local S1 133[026] - load smi 4 135[027] - load smi 4000 138[022] - load null -139[053] - invoke static Scheduler.add_device_task tests/type_propagation/richards_test.toit // {Null_} +139[053] - invoke static Scheduler.add_device_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}] -> {Null_} 142[002] - pop, load local S1 144[026] - load smi 5 146[027] - load smi 5000 149[022] - load null -150[053] - invoke static Scheduler.add_device_task tests/type_propagation/richards_test.toit // {Null_} +150[053] - invoke static Scheduler.add_device_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}] -> {Null_} 153[002] - pop, load local S1 -155[053] - invoke static Scheduler.schedule tests/type_propagation/richards_test.toit // {Null_} +155[053] - invoke static Scheduler.schedule tests/type_propagation/richards_test.toit // [{Scheduler}] -> {Null_} 158[041] - pop 1 159[029] - load [block] in run_richards tests/type_propagation/richards_test.toit 164[038] - load block 0 -166[053] - invoke static assert_ /core/assert_.toit // {Null_} +166[053] - invoke static assert_ /core/assert_.toit // [[block]] -> {Null_} 169[040] - pop 2 171[029] - load [block] in run_richards tests/type_propagation/richards_test.toit 176[038] - load block 0 -178[053] - invoke static assert_ /core/assert_.toit // {Null_} +178[053] - invoke static assert_ /core/assert_.toit // [[block]] -> {Null_} 181[089] - return null S4 0 [block] in run_richards tests/type_propagation/richards_test.toit - argument 0: [block] 0[016] - load local 2 1[005] - load outer S2 // {Scheduler} - 3[007] - load field 0 // {Null_|LargeInteger_|SmallInteger_} + 3[007] - load field 0 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_} 5[027] - load smi 23246 - 8[062] - invoke eq // {True_|False_} + 8[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 9[088] - return S1 1 [block] in run_richards tests/type_propagation/richards_test.toit - argument 0: [block] 0[016] - load local 2 1[005] - load outer S2 // {Scheduler} - 3[007] - load field 1 // {Null_|LargeInteger_|SmallInteger_} + 3[007] - load field 1 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_} 5[027] - load smi 9297 - 8[062] - invoke eq // {True_|False_} + 8[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 9[088] - return S1 1 Scheduler tests/type_propagation/richards_test.toit @@ -127,7 +127,7 @@ Scheduler tests/type_propagation/richards_test.toit 8[016] - load local 2 9[026] - load smi 6 11[022] - load null - 12[053] - invoke static List /core/collections.toit // {List_} + 12[053] - invoke static List /core/collections.toit // [{SmallInteger_}, {Null_}] -> {List_} 15[013] - store field, pop 2 17[016] - load local 2 18[088] - return S1 1 @@ -146,8 +146,8 @@ Scheduler.add_idle_task tests/type_propagation/richards_test.toit 10[000] - load local S11 12[025] - load smi 1 13[000] - load local S9 - 15[053] - invoke static IdleTask tests/type_propagation/richards_test.toit // {IdleTask} - 18[053] - invoke static Scheduler.add_running_task tests/type_propagation/richards_test.toit // {Null_} + 15[053] - invoke static IdleTask tests/type_propagation/richards_test.toit // [{IdleTask}, {Scheduler}, {SmallInteger_}, {SmallInteger_}] -> {IdleTask} + 18[053] - invoke static Scheduler.add_running_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}, {IdleTask}] -> {Null_} 21[089] - return null S1 5 Scheduler.add_worker_task tests/type_propagation/richards_test.toit @@ -163,8 +163,8 @@ Scheduler.add_worker_task tests/type_propagation/richards_test.toit 6[000] - load local S10 8[026] - load smi 2 10[023] - load smi 0 - 11[053] - invoke static WorkerTask tests/type_propagation/richards_test.toit // {WorkerTask} - 14[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // {Null_} + 11[053] - invoke static WorkerTask tests/type_propagation/richards_test.toit // [{WorkerTask}, {Scheduler}, {SmallInteger_}, {SmallInteger_}] -> {WorkerTask} + 14[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}, {WorkerTask}] -> {Null_} 17[089] - return null S1 4 Scheduler.add_handler_task tests/type_propagation/richards_test.toit @@ -178,8 +178,8 @@ Scheduler.add_handler_task tests/type_propagation/richards_test.toit 3[019] - load local 5 4[042] - allocate instance HandlerTask 6[000] - load local S10 - 8[053] - invoke static HandlerTask tests/type_propagation/richards_test.toit // {HandlerTask} - 11[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // {Null_} + 8[053] - invoke static HandlerTask tests/type_propagation/richards_test.toit // [{HandlerTask}, {Scheduler}] -> {HandlerTask} + 11[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Packet}, {HandlerTask}] -> {Null_} 14[089] - return null S1 4 Scheduler.add_device_task tests/type_propagation/richards_test.toit @@ -193,8 +193,8 @@ Scheduler.add_device_task tests/type_propagation/richards_test.toit 3[019] - load local 5 4[042] - allocate instance DeviceTask 6[000] - load local S10 - 8[053] - invoke static DeviceTask tests/type_propagation/richards_test.toit // {DeviceTask} - 11[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // {Null_} + 8[053] - invoke static DeviceTask tests/type_propagation/richards_test.toit // [{DeviceTask}, {Scheduler}] -> {DeviceTask} + 11[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}, {DeviceTask}] -> {Null_} 14[089] - return null S1 4 Scheduler.add_running_task tests/type_propagation/richards_test.toit @@ -208,9 +208,9 @@ Scheduler.add_running_task tests/type_propagation/richards_test.toit 4[000] - load local S6 6[000] - load local S6 8[000] - load local S6 - 10[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // {Null_} - 13[010] - pop, load field local 70 // {*} - 15[058] - invoke virtual set_running // {Null_} + 10[053] - invoke static Scheduler.add_task tests/type_propagation/richards_test.toit // [{Scheduler}, {SmallInteger_}, {SmallInteger_}, {Null_}, {IdleTask}] -> {Null_} + 13[010] - pop, load field local 70 // [{Scheduler}] -> {*} + 15[058] - invoke virtual set_running // [{*}] -> {Null_} 19[089] - return null S1 5 Scheduler.add_task tests/type_propagation/richards_test.toit @@ -221,141 +221,141 @@ Scheduler.add_task tests/type_propagation/richards_test.toit - argument 4: {HandlerTask|WorkerTask|DeviceTask|IdleTask} 0[000] - load local S6 2[042] - allocate instance TaskControlBlock - 4[009] - load field local 56 // {*} + 4[009] - load field local 56 // [{Scheduler}] -> {*} 6[000] - load local S8 8[000] - load local S8 10[000] - load local S8 12[000] - load local S8 - 14[053] - invoke static TaskControlBlock tests/type_propagation/richards_test.toit // {TaskControlBlock} + 14[053] - invoke static TaskControlBlock tests/type_propagation/richards_test.toit // [{TaskControlBlock}, {*}, {SmallInteger_}, {SmallInteger_}, {Null_|Packet}, {HandlerTask|WorkerTask|DeviceTask|IdleTask}] -> {TaskControlBlock} 17[013] - store field, pop 4 19[000] - load local S6 - 21[009] - load field local 71 // {*} + 21[009] - load field local 71 // [{Scheduler}] -> {*} 23[013] - store field, pop 3 - 25[009] - load field local 38 // {Null_|List_} + 25[009] - load field local 38 // [{Scheduler}] -> {Null_|List_} 27[000] - load local S6 - 29[009] - load field local 72 // {*} - 31[079] - invoke at_put // {*} + 29[009] - load field local 72 // [{Scheduler}] -> {*} + 31[079] - invoke at_put // [{Null_|List_}, {SmallInteger_}, {*}] -> {*} 32[089] - return null S1 5 Scheduler.schedule tests/type_propagation/richards_test.toit - argument 0: {Scheduler} 0[016] - load local 2 - 1[009] - load field local 51 // {*} + 1[009] - load field local 51 // [{Scheduler}] -> {*} 3[013] - store field, pop 4 - 5[009] - load field local 66 // {*} + 5[009] - load field local 66 // [{Scheduler}] -> {*} 7[082] - branch if false T52 - 10[009] - load field local 66 // {*} - 12[058] - invoke virtual is_held_or_suspended // {True_|False_} + 10[009] - load field local 66 // [{Scheduler}] -> {*} + 12[058] - invoke virtual is_held_or_suspended // [{*}] -> {True_|False_} 16[082] - branch if false T30 19[016] - load local 2 - 20[009] - load field local 67 // {*} - 22[060] - invoke virtual get link // {Null_|Packet|TaskControlBlock} + 20[009] - load field local 67 // [{Scheduler}] -> {*} + 22[060] - invoke virtual get link // [{*}] -> {Null_|Packet|TaskControlBlock} 25[013] - store field, pop 4 27[080] - branch T47 30[016] - load local 2 - 31[009] - load field local 67 // {*} - 33[060] - invoke virtual get id // {Null_|LargeInteger_|SmallInteger_|ByteArray_} + 31[009] - load field local 67 // [{Scheduler}] -> {*} + 33[060] - invoke virtual get id // [{*}] -> {Null_|LargeInteger_|SmallInteger_|ByteArray_} 36[013] - store field, pop 5 38[016] - load local 2 - 39[009] - load field local 67 // {*} - 41[058] - invoke virtual run // {*} + 39[009] - load field local 67 // [{Scheduler}] -> {*} + 41[058] - invoke virtual run // [{*}] -> {*} 45[013] - store field, pop 4 47[083] - branch back T5 52[089] - return null S0 1 Scheduler.hold_current tests/type_propagation/richards_test.toit - argument 0: {Scheduler} - 0[009] - load field local 18 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 18 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_} 2[017] - load local 3 3[015] - load local 1 4[025] - load smi 1 - 5[073] - invoke add // {LargeInteger_|SmallInteger_} + 5[073] - invoke add // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[013] - store field, pop 1 - 8[010] - pop, load field local 66 // {*} - 10[058] - invoke virtual mark_as_held // {Null_} - 14[010] - pop, load field local 66 // {*} - 16[060] - invoke virtual get link // {Null_|Packet|TaskControlBlock} + 8[010] - pop, load field local 66 // [{Scheduler}] -> {*} + 10[058] - invoke virtual mark_as_held // [{*}] -> {Null_} + 14[010] - pop, load field local 66 // [{Scheduler}] -> {*} + 16[060] - invoke virtual get link // [{*}] -> {Null_|Packet|TaskControlBlock} 19[088] - return S1 1 Scheduler.suspend_current tests/type_propagation/richards_test.toit - argument 0: {Scheduler} - 0[009] - load field local 66 // {*} - 2[058] - invoke virtual mark_as_suspended // {Null_} - 6[010] - pop, load field local 66 // {*} + 0[009] - load field local 66 // [{Scheduler}] -> {*} + 2[058] - invoke virtual mark_as_suspended // [{*}] -> {Null_} + 6[010] - pop, load field local 66 // [{Scheduler}] -> {*} 8[088] - return S1 1 Scheduler.release tests/type_propagation/richards_test.toit - argument 0: {Scheduler} - argument 1: {SmallInteger_} - 0[009] - load field local 35 // {Null_|List_} + 0[009] - load field local 35 // [{Scheduler}] -> {Null_|List_} 2[017] - load local 3 - 3[078] - invoke at // {*} + 3[078] - invoke at // [{Null_|List_}, {SmallInteger_}] -> {*} 4[014] - load local 0 5[081] - branch if true T12 8[014] - load local 0 9[088] - return S2 2 12[014] - load local 0 - 13[058] - invoke virtual mark_as_not_held // {Null_} + 13[058] - invoke virtual mark_as_not_held // [{*}] -> {Null_} 17[002] - pop, load local S0 - 19[060] - invoke virtual get priority // {Null_|SmallInteger_} - 22[009] - load field local 69 // {*} - 24[060] - invoke virtual get priority // {Null_|SmallInteger_} - 27[064] - invoke gt // {True_|False_} + 19[060] - invoke virtual get priority // [{*}] -> {Null_|SmallInteger_} + 22[009] - load field local 69 // [{Scheduler}] -> {*} + 24[060] - invoke virtual get priority // [{*}] -> {Null_|SmallInteger_} + 27[064] - invoke gt // [{Null_|SmallInteger_}, {Null_|SmallInteger_}] -> {True_|False_} 28[082] - branch if false T38 31[014] - load local 0 32[088] - return S2 2 35[080] - branch T43 - 38[009] - load field local 68 // {*} + 38[009] - load field local 68 // [{Scheduler}] -> {*} 40[088] - return S2 2 Scheduler.queue tests/type_propagation/richards_test.toit - argument 0: {Scheduler} - argument 1: {Null_|Packet} 0[052] - load local, as class, pop 2 - Packet(35 - 36) // {True_|False_} - 2[009] - load field local 35 // {Null_|List_} - 4[009] - load field local 19 // {Null_|LargeInteger_|SmallInteger_} - 6[078] - invoke at // {*} + 2[009] - load field local 35 // [{Scheduler}] -> {Null_|List_} + 4[009] - load field local 19 // [{Packet}] -> {Null_|LargeInteger_|SmallInteger_} + 6[078] - invoke at // [{Null_|List_}, {Null_|LargeInteger_|SmallInteger_}] -> {*} 7[014] - load local 0 8[081] - branch if true T15 11[014] - load local 0 12[088] - return S2 2 - 15[009] - load field local 4 // {Null_|LargeInteger_|SmallInteger_} + 15[009] - load field local 4 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_} 17[019] - load local 5 18[015] - load local 1 19[025] - load smi 1 - 20[073] - invoke add // {LargeInteger_|SmallInteger_} + 20[073] - invoke add // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 21[013] - store field, pop 0 23[002] - pop, load local S3 25[022] - load null 26[013] - store field, pop 0 28[017] - load local 3 - 29[009] - load field local 85 // {Null_|LargeInteger_|SmallInteger_|ByteArray_} + 29[009] - load field local 85 // [{Scheduler}] -> {Null_|LargeInteger_|SmallInteger_|ByteArray_} 31[048] - as class LargeInteger_(19 - 21) // {True_|False_} 33[013] - store field, pop 1 35[014] - load local 0 - 36[009] - load field local 69 // {*} + 36[009] - load field local 69 // [{Scheduler}] -> {*} 38[019] - load local 5 - 39[058] - invoke virtual check_priority_add // {*} + 39[058] - invoke virtual check_priority_add // [{*}, {*}, {Packet}] -> {*} 43[088] - return S2 2 STATE_NOT_HELD tests/type_propagation/richards_test.toit 0[026] - load smi 4 - 2[058] - invoke virtual ~ // {SmallInteger_} + 2[058] - invoke virtual ~ // [{SmallInteger_}] -> {SmallInteger_} 6[088] - return S1 0 TaskControlBlock.link tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - 0[009] - load field local 2 // {Null_|TaskControlBlock} + 0[009] - load field local 2 // [{TaskControlBlock}] -> {Null_|TaskControlBlock} 2[088] - return S1 1 TaskControlBlock.id tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - 0[009] - load field local 18 // {Null_|SmallInteger_} + 0[009] - load field local 18 // [{TaskControlBlock}] -> {Null_|SmallInteger_} 2[088] - return S1 1 TaskControlBlock.priority tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - 0[009] - load field local 34 // {Null_|SmallInteger_} + 0[009] - load field local 34 // [{TaskControlBlock}] -> {Null_|SmallInteger_} 2[088] - return S1 1 TaskControlBlock tests/type_propagation/richards_test.toit @@ -386,7 +386,7 @@ TaskControlBlock tests/type_propagation/richards_test.toit 32[013] - store field, pop 5 34[000] - load local S7 36[026] - load smi 2 - 38[009] - load field local 57 // {Null_|Packet} + 38[009] - load field local 57 // [{TaskControlBlock}] -> {Null_|Packet} 40[082] - branch if false T46 43[041] - pop 1 44[026] - load smi 3 @@ -404,105 +404,105 @@ TaskControlBlock.set_running tests/type_propagation/richards_test.toit TaskControlBlock.mark_as_not_held tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[016] - load local 2 - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[033] - load global var lazy G0 // {SmallInteger_} - 5[069] - invoke bit and // {LargeInteger_|SmallInteger_} + 5[069] - invoke bit and // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[013] - store field, pop 5 8[089] - return null S0 1 TaskControlBlock.mark_as_held tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[016] - load local 2 - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[026] - load smi 4 - 5[067] - invoke bit or // {LargeInteger_|SmallInteger_} + 5[067] - invoke bit or // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[013] - store field, pop 5 8[089] - return null S0 1 TaskControlBlock.is_held_or_suspended tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - 0[009] - load field local 82 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 82 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 2[026] - load smi 4 - 4[069] - invoke bit and // {LargeInteger_|SmallInteger_} + 4[069] - invoke bit and // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[023] - load smi 0 - 6[062] - invoke eq // {True_|False_} + 6[062] - invoke eq // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 7[081] - branch if true T15 10[020] - load literal true 12[080] - branch T17 15[020] - load literal false 17[014] - load local 0 18[081] - branch if true T26 - 21[010] - pop, load field local 82 // {Null_|LargeInteger_|SmallInteger_} + 21[010] - pop, load field local 82 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 23[026] - load smi 2 - 25[062] - invoke eq // {True_|False_} + 25[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 26[088] - return S1 1 TaskControlBlock.mark_as_suspended tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[016] - load local 2 - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[026] - load smi 2 - 5[067] - invoke bit or // {LargeInteger_|SmallInteger_} + 5[067] - invoke bit or // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[013] - store field, pop 5 8[089] - return null S0 1 TaskControlBlock.mark_as_runnable tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[016] - load local 2 - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[025] - load smi 1 - 4[067] - invoke bit or // {LargeInteger_|SmallInteger_} + 4[067] - invoke bit or // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 5[013] - store field, pop 5 7[089] - return null S0 1 TaskControlBlock.run tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} 0[022] - load null - 1[009] - load field local 83 // {Null_|LargeInteger_|SmallInteger_} + 1[009] - load field local 83 // [{TaskControlBlock}] -> {Null_|LargeInteger_|SmallInteger_} 3[026] - load smi 3 - 5[062] - invoke eq // {True_|False_} + 5[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 6[082] - branch if false T31 - 9[009] - load field local 51 // {Null_|Packet} + 9[009] - load field local 51 // [{TaskControlBlock}] -> {Null_|Packet} 11[004] - store local, pop S1 13[017] - load local 3 14[015] - load local 1 - 15[060] - invoke virtual get link // {Null_|Packet} + 15[060] - invoke virtual get link // [{Null_|Packet}] -> {Null_|Packet} 18[013] - store field, pop 3 20[017] - load local 3 21[023] - load smi 0 - 22[009] - load field local 53 // {Null_|Packet} + 22[009] - load field local 53 // [{TaskControlBlock}] -> {Null_|Packet} 24[082] - branch if false T29 27[041] - pop 1 28[025] - load smi 1 29[013] - store field, pop 5 - 31[009] - load field local 67 // {Null_|HandlerTask|WorkerTask|DeviceTask|IdleTask} + 31[009] - load field local 67 // [{TaskControlBlock}] -> {Null_|HandlerTask|WorkerTask|DeviceTask|IdleTask} 33[015] - load local 1 - 34[058] - invoke virtual run // {*} + 34[058] - invoke virtual run // [{Null_|HandlerTask|WorkerTask|DeviceTask|IdleTask}, {Null_|Packet}] -> {*} 38[088] - return S2 1 TaskControlBlock.check_priority_add tests/type_propagation/richards_test.toit - argument 0: {TaskControlBlock} - argument 1: {*} - argument 2: {Packet} - 0[009] - load field local 52 // {Null_|Packet} + 0[009] - load field local 52 // [{TaskControlBlock}] -> {Null_|Packet} 2[081] - branch if true T30 5[018] - load local 4 6[017] - load local 3 7[013] - store field, pop 3 9[018] - load local 4 - 10[053] - invoke static TaskControlBlock.mark_as_runnable tests/type_propagation/richards_test.toit // {Null_} - 13[010] - pop, load field local 36 // {Null_|SmallInteger_} + 10[053] - invoke static TaskControlBlock.mark_as_runnable tests/type_propagation/richards_test.toit // [{TaskControlBlock}] -> {Null_} + 13[010] - pop, load field local 36 // [{TaskControlBlock}] -> {Null_|SmallInteger_} 15[018] - load local 4 - 16[060] - invoke virtual get priority // {Null_|SmallInteger_} - 19[064] - invoke gt // {True_|False_} + 16[060] - invoke virtual get priority // [{*}] -> {Null_|SmallInteger_} + 19[064] - invoke gt // [{Null_|SmallInteger_}, {Null_|SmallInteger_}] -> {True_|False_} 20[082] - branch if false T27 23[018] - load local 4 24[088] - return S1 3 27[080] - branch T40 30[018] - load local 4 31[017] - load local 3 - 32[009] - load field local 54 // {Null_|Packet} - 34[058] - invoke virtual add_to // {Packet} + 32[009] - load field local 54 // [{TaskControlBlock}] -> {Null_|Packet} + 34[058] - invoke virtual add_to // [{Packet}, {Null_|Packet}] -> {Packet} 38[013] - store field, pop 3 40[017] - load local 3 41[088] - return S1 3 @@ -527,45 +527,45 @@ IdleTask tests/type_propagation/richards_test.toit IdleTask.run tests/type_propagation/richards_test.toit - argument 0: {IdleTask} - argument 1: {Null_|Packet} - 0[009] - load field local 35 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 35 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 2[018] - load local 4 3[015] - load local 1 4[025] - load smi 1 - 5[074] - invoke sub // {LargeInteger_|SmallInteger_} + 5[074] - invoke sub // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 6[013] - store field, pop 2 - 8[010] - pop, load field local 35 // {Null_|LargeInteger_|SmallInteger_} + 8[010] - pop, load field local 35 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 10[023] - load smi 0 - 11[062] - invoke eq // {True_|False_} + 11[062] - invoke eq // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 12[082] - branch if false T23 - 15[009] - load field local 3 // {Null_|Scheduler} - 17[053] - invoke static Scheduler.hold_current tests/type_propagation/richards_test.toit // {Null_|Packet|TaskControlBlock} + 15[009] - load field local 3 // [{IdleTask}] -> {Null_|Scheduler} + 17[053] - invoke static Scheduler.hold_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {Null_|Packet|TaskControlBlock} 20[088] - return S1 2 - 23[009] - load field local 19 // {Null_|LargeInteger_|SmallInteger_} + 23[009] - load field local 19 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 25[025] - load smi 1 - 26[069] - invoke bit and // {LargeInteger_|SmallInteger_} + 26[069] - invoke bit and // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 27[023] - load smi 0 - 28[062] - invoke eq // {True_|False_} + 28[062] - invoke eq // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 29[082] - branch if false T52 32[017] - load local 3 - 33[009] - load field local 20 // {Null_|LargeInteger_|SmallInteger_} + 33[009] - load field local 20 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 35[025] - load smi 1 - 36[071] - invoke bit shr // {LargeInteger_|SmallInteger_} + 36[071] - invoke bit shr // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 37[013] - store field, pop 1 - 39[009] - load field local 3 // {Null_|Scheduler} + 39[009] - load field local 3 // [{IdleTask}] -> {Null_|Scheduler} 41[026] - load smi 4 - 43[053] - invoke static Scheduler.release tests/type_propagation/richards_test.toit // {*} + 43[053] - invoke static Scheduler.release tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {SmallInteger_}] -> {*} 46[088] - return S1 2 49[080] - branch T73 52[017] - load local 3 - 53[009] - load field local 20 // {Null_|LargeInteger_|SmallInteger_} + 53[009] - load field local 20 // [{IdleTask}] -> {Null_|LargeInteger_|SmallInteger_} 55[025] - load smi 1 - 56[071] - invoke bit shr // {LargeInteger_|SmallInteger_} + 56[071] - invoke bit shr // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 57[027] - load smi 53256 - 60[068] - invoke bit xor // {LargeInteger_|SmallInteger_} + 60[068] - invoke bit xor // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 61[013] - store field, pop 1 - 63[009] - load field local 3 // {Null_|Scheduler} + 63[009] - load field local 3 // [{IdleTask}] -> {Null_|Scheduler} 65[026] - load smi 5 - 67[053] - invoke static Scheduler.release tests/type_propagation/richards_test.toit // {*} + 67[053] - invoke static Scheduler.release tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {SmallInteger_}] -> {*} 70[088] - return S1 2 DeviceTask tests/type_propagation/richards_test.toit @@ -582,25 +582,25 @@ DeviceTask.run tests/type_propagation/richards_test.toit - argument 1: {Null_|Packet} 0[016] - load local 2 1[081] - branch if true T35 - 4[009] - load field local 19 // {Null_|Packet} + 4[009] - load field local 19 // [{DeviceTask}] -> {Null_|Packet} 6[081] - branch if true T17 - 9[009] - load field local 3 // {Null_|Scheduler} - 11[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // {*} + 9[009] - load field local 3 // [{DeviceTask}] -> {Null_|Scheduler} + 11[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {*} 14[088] - return S1 2 - 17[009] - load field local 19 // {Null_|Packet} + 17[009] - load field local 19 // [{DeviceTask}] -> {Null_|Packet} 19[018] - load local 4 20[022] - load null 21[013] - store field, pop 1 - 23[009] - load field local 4 // {Null_|Scheduler} + 23[009] - load field local 4 // [{DeviceTask}] -> {Null_|Scheduler} 25[015] - load local 1 - 26[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // {*} + 26[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {Null_|Packet}] -> {*} 29[088] - return S2 2 32[080] - branch T47 35[017] - load local 3 36[017] - load local 3 37[013] - store field, pop 1 - 39[009] - load field local 3 // {Null_|Scheduler} - 41[053] - invoke static Scheduler.hold_current tests/type_propagation/richards_test.toit // {Null_|Packet|TaskControlBlock} + 39[009] - load field local 3 // [{DeviceTask}] -> {Null_|Scheduler} + 41[053] - invoke static Scheduler.hold_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {Null_|Packet|TaskControlBlock} 44[088] - return S1 2 WorkerTask tests/type_propagation/richards_test.toit @@ -625,57 +625,57 @@ WorkerTask.run tests/type_propagation/richards_test.toit - argument 1: {Null_|Packet} 0[016] - load local 2 1[081] - branch if true T12 - 4[009] - load field local 3 // {Null_|Scheduler} - 6[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // {*} + 4[009] - load field local 3 // [{WorkerTask}] -> {Null_|Scheduler} + 6[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {*} 9[088] - return S1 2 12[017] - load local 3 13[026] - load smi 2 - 15[009] - load field local 21 // {Null_|SmallInteger_} + 15[009] - load field local 21 // [{WorkerTask}] -> {Null_|SmallInteger_} 17[026] - load smi 2 - 19[062] - invoke eq // {True_|False_} + 19[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 20[082] - branch if false T26 23[041] - pop 1 24[026] - load smi 3 26[013] - store field, pop 1 28[016] - load local 2 - 29[009] - load field local 20 // {Null_|SmallInteger_} - 31[061] - invoke virtual set id // {SmallInteger_} + 29[009] - load field local 20 // [{WorkerTask}] -> {Null_|SmallInteger_} + 31[061] - invoke virtual set id // [{Null_|Packet}, {Null_|SmallInteger_}] -> {SmallInteger_} 34[002] - pop, load local S2 36[023] - load smi 0 - 37[061] - invoke virtual set a1 // {SmallInteger_} + 37[061] - invoke virtual set a1 // [{Packet}, {SmallInteger_}] -> {SmallInteger_} 40[041] - pop 1 41[023] - load smi 0 42[014] - load local 0 43[026] - load smi 4 - 45[063] - invoke lt // {True_|False_} + 45[063] - invoke lt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 46[082] - branch if false T87 49[018] - load local 4 - 50[009] - load field local 37 // {Null_|LargeInteger_|SmallInteger_} + 50[009] - load field local 37 // [{WorkerTask}] -> {Null_|LargeInteger_|SmallInteger_} 52[025] - load smi 1 - 53[073] - invoke add // {LargeInteger_|SmallInteger_} + 53[073] - invoke add // [{Null_|LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 54[011] - store field 2 56[026] - load smi 26 - 58[064] - invoke gt // {True_|False_} + 58[064] - invoke gt // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 59[082] - branch if false T66 62[018] - load local 4 63[025] - load smi 1 64[013] - store field, pop 2 66[017] - load local 3 - 67[060] - invoke virtual get a2 // {Null_|List_} + 67[060] - invoke virtual get a2 // [{Packet}] -> {Null_|List_} 70[015] - load local 1 - 71[009] - load field local 38 // {Null_|LargeInteger_|SmallInteger_} - 73[079] - invoke at_put // {*} + 71[009] - load field local 38 // [{WorkerTask}] -> {Null_|LargeInteger_|SmallInteger_} + 73[079] - invoke at_put // [{Null_|List_}, {LargeInteger_|SmallInteger_}, {Null_|LargeInteger_|SmallInteger_}] -> {*} 74[041] - pop 1 75[014] - load local 0 76[014] - load local 0 77[025] - load smi 1 - 78[073] - invoke add // {LargeInteger_|SmallInteger_} + 78[073] - invoke add // [{LargeInteger_|SmallInteger_}, {SmallInteger_}] -> {LargeInteger_|SmallInteger_} 79[004] - store local, pop S2 81[041] - pop 1 82[083] - branch back T42 - 87[010] - pop, load field local 3 // {Null_|Scheduler} + 87[010] - pop, load field local 3 // [{WorkerTask}] -> {Null_|Scheduler} 89[017] - load local 3 - 90[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // {*} + 90[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {Packet}] -> {*} 93[088] - return S1 2 HandlerTask tests/type_propagation/richards_test.toit @@ -693,64 +693,64 @@ HandlerTask.run tests/type_propagation/richards_test.toit 0[016] - load local 2 1[082] - branch if false T36 4[016] - load local 2 - 5[060] - invoke virtual get kind // {Null_|SmallInteger_} + 5[060] - invoke virtual get kind // [{Null_|Packet}] -> {Null_|SmallInteger_} 8[025] - load smi 1 - 9[062] - invoke eq // {True_|False_} + 9[062] - invoke eq // [{Null_|SmallInteger_}, {SmallInteger_}] -> {True_|False_} 10[082] - branch if false T26 13[017] - load local 3 14[017] - load local 3 - 15[009] - load field local 21 // {Null_|Packet} - 17[058] - invoke virtual add_to // {Packet} + 15[009] - load field local 21 // [{HandlerTask}] -> {Null_|Packet} + 17[058] - invoke virtual add_to // [{Packet}, {Null_|Packet}] -> {Packet} 21[013] - store field, pop 1 23[080] - branch T36 26[017] - load local 3 27[017] - load local 3 - 28[009] - load field local 37 // {Null_|Packet} - 30[058] - invoke virtual add_to // {Packet} + 28[009] - load field local 37 // [{HandlerTask}] -> {Null_|Packet} + 30[058] - invoke virtual add_to // [{Packet}, {Null_|Packet}] -> {Packet} 34[013] - store field, pop 2 - 36[009] - load field local 19 // {Null_|Packet} + 36[009] - load field local 19 // [{HandlerTask}] -> {Null_|Packet} 38[082] - branch if false T119 - 41[009] - load field local 19 // {Null_|Packet} - 43[060] - invoke virtual get a1 // {*} + 41[009] - load field local 19 // [{HandlerTask}] -> {Null_|Packet} + 43[060] - invoke virtual get a1 // [{Null_|Packet}] -> {*} 46[014] - load local 0 47[026] - load smi 4 - 49[063] - invoke lt // {True_|False_} + 49[063] - invoke lt // [{*}, {SmallInteger_}] -> {True_|False_} 50[082] - branch if false T99 - 53[009] - load field local 36 // {Null_|Packet} + 53[009] - load field local 36 // [{HandlerTask}] -> {Null_|Packet} 55[082] - branch if false T96 - 58[009] - load field local 36 // {Null_|Packet} + 58[009] - load field local 36 // [{HandlerTask}] -> {Null_|Packet} 60[019] - load local 5 - 61[009] - load field local 38 // {Null_|Packet} - 63[060] - invoke virtual get link // {Null_|Packet} + 61[009] - load field local 38 // [{HandlerTask}] -> {Null_|Packet} + 63[060] - invoke virtual get link // [{Null_|Packet}] -> {Null_|Packet} 66[013] - store field, pop 2 68[014] - load local 0 - 69[009] - load field local 22 // {Null_|Packet} - 71[060] - invoke virtual get a2 // {Null_|List_} + 69[009] - load field local 22 // [{HandlerTask}] -> {Null_|Packet} + 71[060] - invoke virtual get a2 // [{Null_|Packet}] -> {Null_|List_} 74[017] - load local 3 - 75[078] - invoke at // {*} - 76[061] - invoke virtual set a1 // {*} - 79[010] - pop, load field local 21 // {Null_|Packet} + 75[078] - invoke at // [{Null_|List_}, {*}] -> {*} + 76[061] - invoke virtual set a1 // [{Null_|Packet}, {*}] -> {*} + 79[010] - pop, load field local 21 // [{HandlerTask}] -> {Null_|Packet} 81[016] - load local 2 82[025] - load smi 1 - 83[073] - invoke add // {float|LargeInteger_|SmallInteger_} - 84[061] - invoke virtual set a1 // {float|LargeInteger_|SmallInteger_} - 87[010] - pop, load field local 5 // {Null_|Scheduler} + 83[073] - invoke add // [{*}, {SmallInteger_}] -> {float|LargeInteger_|SmallInteger_} + 84[061] - invoke virtual set a1 // [{Null_|Packet}, {float|LargeInteger_|SmallInteger_}] -> {float|LargeInteger_|SmallInteger_} + 87[010] - pop, load field local 5 // [{HandlerTask}] -> {Null_|Scheduler} 89[015] - load local 1 - 90[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // {*} + 90[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {Null_|Packet}] -> {*} 93[088] - return S3 2 96[080] - branch T118 - 99[009] - load field local 20 // {Null_|Packet} + 99[009] - load field local 20 // [{HandlerTask}] -> {Null_|Packet} 101[019] - load local 5 -102[009] - load field local 22 // {Null_|Packet} -104[060] - invoke virtual get link // {Null_|Packet} +102[009] - load field local 22 // [{HandlerTask}] -> {Null_|Packet} +104[060] - invoke virtual get link // [{Null_|Packet}] -> {Null_|Packet} 107[013] - store field, pop 1 -109[009] - load field local 5 // {Null_|Scheduler} +109[009] - load field local 5 // [{HandlerTask}] -> {Null_|Scheduler} 111[015] - load local 1 -112[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // {*} +112[053] - invoke static Scheduler.queue tests/type_propagation/richards_test.toit // [{Null_|Scheduler}, {Null_|Packet}] -> {*} 115[088] - return S3 2 118[041] - pop 1 -119[009] - load field local 3 // {Null_|Scheduler} -121[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // {*} +119[009] - load field local 3 // [{HandlerTask}] -> {Null_|Scheduler} +121[053] - invoke static Scheduler.suspend_current tests/type_propagation/richards_test.toit // [{Null_|Scheduler}] -> {*} 124[088] - return S1 2 Packet tests/type_propagation/richards_test.toit @@ -773,14 +773,14 @@ Packet tests/type_propagation/richards_test.toit 16[019] - load local 5 17[026] - load smi 4 19[022] - load null - 20[053] - invoke static List /core/collections.toit // {List_} + 20[053] - invoke static List /core/collections.toit // [{SmallInteger_}, {Null_}] -> {List_} 23[013] - store field, pop 4 25[019] - load local 5 26[088] - return S1 4 Packet.link tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 2 // {Null_|Packet} + 0[009] - load field local 2 // [{Packet}] -> {Null_|Packet} 2[088] - return S1 1 Packet.link= tests/type_propagation/richards_test.toit @@ -793,7 +793,7 @@ Packet.link= tests/type_propagation/richards_test.toit Packet.id tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 18 // {Null_|LargeInteger_|SmallInteger_} + 0[009] - load field local 18 // [{Packet}] -> {Null_|LargeInteger_|SmallInteger_} 2[088] - return S1 1 Packet.id= tests/type_propagation/richards_test.toit @@ -807,12 +807,12 @@ Packet.id= tests/type_propagation/richards_test.toit Packet.kind tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 34 // {Null_|SmallInteger_} + 0[009] - load field local 34 // [{Packet}] -> {Null_|SmallInteger_} 2[088] - return S1 1 Packet.a1 tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 50 // {*} + 0[009] - load field local 50 // [{Packet}] -> {*} 2[088] - return S1 1 Packet.a1= tests/type_propagation/richards_test.toit @@ -825,7 +825,7 @@ Packet.a1= tests/type_propagation/richards_test.toit Packet.a2 tests/type_propagation/richards_test.toit - argument 0: {Packet} - 0[009] - load field local 66 // {Null_|List_} + 0[009] - load field local 66 // [{Packet}] -> {Null_|List_} 2[088] - return S1 1 Packet.add_to tests/type_propagation/richards_test.toit @@ -840,7 +840,7 @@ Packet.add_to tests/type_propagation/richards_test.toit 9[088] - return S1 2 12[016] - load local 2 13[014] - load local 0 - 14[060] - invoke virtual get link // {Null_|Packet} + 14[060] - invoke virtual get link // [{Null_|Packet}] -> {Null_|Packet} 17[014] - load local 0 18[081] - branch if true T25 21[041] - pop 1 @@ -851,6 +851,6 @@ Packet.add_to tests/type_propagation/richards_test.toit 29[083] - branch back T13 34[014] - load local 0 35[019] - load local 5 - 36[061] - invoke virtual set link // {Packet} + 36[061] - invoke virtual set link // [{Null_|Packet}, {Packet}] -> {Packet} 39[002] - pop, load local S3 41[088] - return S2 2 diff --git a/tests/type_propagation/gold/spawn_test.gold b/tests/type_propagation/gold/spawn_test.gold index 40c2bed17..66baf4fd0 100644 --- a/tests/type_propagation/gold/spawn_test.gold +++ b/tests/type_propagation/gold/spawn_test.gold @@ -2,21 +2,21 @@ main tests/type_propagation/spawn_test.toit 0[029] - load [lambda] in main tests/type_propagation/spawn_test.toit 5[023] - load smi 0 6[022] - load null - 7[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 7[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 10[014] - load local 0 11[004] - store local, pop S1 13[023] - load smi 0 - 14[053] - invoke static lambda_ /core/objects.toit // {Lambda} + 14[053] - invoke static lambda_ /core/objects.toit // [{SmallInteger_}, {LargeArray_|SmallArray_}, {SmallInteger_}] -> {Lambda} 17[022] - load null - 18[053] - invoke static spawn /core/process.toit // {Process_} + 18[053] - invoke static spawn /core/process.toit // [{Lambda}, {Null_}] -> {Process_} 21[041] - pop 1 22[020] - load literal hest - 24[053] - invoke static id tests/type_propagation/spawn_test.toit // {String_} + 24[053] - invoke static id tests/type_propagation/spawn_test.toit // [{String_}] -> {String_} 27[089] - return null S1 0 [lambda] in main tests/type_propagation/spawn_test.toit 0[026] - load smi 7 - 2[053] - invoke static id tests/type_propagation/spawn_test.toit // {SmallInteger_} + 2[053] - invoke static id tests/type_propagation/spawn_test.toit // [{SmallInteger_}] -> {SmallInteger_} 5[088] - return S1 0 id tests/type_propagation/spawn_test.toit diff --git a/tests/type_propagation/gold/spawn_test.gold-O2 b/tests/type_propagation/gold/spawn_test.gold-O2 index 40c2bed17..66baf4fd0 100644 --- a/tests/type_propagation/gold/spawn_test.gold-O2 +++ b/tests/type_propagation/gold/spawn_test.gold-O2 @@ -2,21 +2,21 @@ main tests/type_propagation/spawn_test.toit 0[029] - load [lambda] in main tests/type_propagation/spawn_test.toit 5[023] - load smi 0 6[022] - load null - 7[053] - invoke static Array_ /core/collections.toit // {LargeArray_|SmallArray_} + 7[053] - invoke static Array_ /core/collections.toit // [{SmallInteger_}, {Null_}] -> {LargeArray_|SmallArray_} 10[014] - load local 0 11[004] - store local, pop S1 13[023] - load smi 0 - 14[053] - invoke static lambda_ /core/objects.toit // {Lambda} + 14[053] - invoke static lambda_ /core/objects.toit // [{SmallInteger_}, {LargeArray_|SmallArray_}, {SmallInteger_}] -> {Lambda} 17[022] - load null - 18[053] - invoke static spawn /core/process.toit // {Process_} + 18[053] - invoke static spawn /core/process.toit // [{Lambda}, {Null_}] -> {Process_} 21[041] - pop 1 22[020] - load literal hest - 24[053] - invoke static id tests/type_propagation/spawn_test.toit // {String_} + 24[053] - invoke static id tests/type_propagation/spawn_test.toit // [{String_}] -> {String_} 27[089] - return null S1 0 [lambda] in main tests/type_propagation/spawn_test.toit 0[026] - load smi 7 - 2[053] - invoke static id tests/type_propagation/spawn_test.toit // {SmallInteger_} + 2[053] - invoke static id tests/type_propagation/spawn_test.toit // [{SmallInteger_}] -> {SmallInteger_} 5[088] - return S1 0 id tests/type_propagation/spawn_test.toit diff --git a/tests/type_propagation/gold/try_test.gold b/tests/type_propagation/gold/try_test.gold index 11f6f8daf..3d37f0458 100644 --- a/tests/type_propagation/gold/try_test.gold +++ b/tests/type_propagation/gold/try_test.gold @@ -11,7 +11,7 @@ nested tests/type_propagation/try_test.toit 1[029] - load [block] in nested tests/type_propagation/try_test.toit 6[094] - link try 0 8[038] - load block 4 - 10[055] - invoke block S1 // {Null_} + 10[055] - invoke block S1 // [[block]] -> {Null_} 12[041] - pop 1 13[095] - unlink try 0 15[018] - load local 4 @@ -25,7 +25,7 @@ nested tests/type_propagation/try_test.toit 1[029] - load [block] in [block] in nested tests/type_propagation/try_test.toit 6[094] - link try 0 8[038] - load block 4 - 10[055] - invoke block S1 // {SmallInteger_} + 10[055] - invoke block S1 // [[block]] -> {SmallInteger_} 12[041] - pop 1 13[095] - unlink try 0 15[000] - load local S7 diff --git a/tests/type_propagation/gold/try_test.gold-O2 b/tests/type_propagation/gold/try_test.gold-O2 index 11f6f8daf..3d37f0458 100644 --- a/tests/type_propagation/gold/try_test.gold-O2 +++ b/tests/type_propagation/gold/try_test.gold-O2 @@ -11,7 +11,7 @@ nested tests/type_propagation/try_test.toit 1[029] - load [block] in nested tests/type_propagation/try_test.toit 6[094] - link try 0 8[038] - load block 4 - 10[055] - invoke block S1 // {Null_} + 10[055] - invoke block S1 // [[block]] -> {Null_} 12[041] - pop 1 13[095] - unlink try 0 15[018] - load local 4 @@ -25,7 +25,7 @@ nested tests/type_propagation/try_test.toit 1[029] - load [block] in [block] in nested tests/type_propagation/try_test.toit 6[094] - link try 0 8[038] - load block 4 - 10[055] - invoke block S1 // {SmallInteger_} + 10[055] - invoke block S1 // [[block]] -> {SmallInteger_} 12[041] - pop 1 13[095] - unlink try 0 15[000] - load local S7 diff --git a/tests/type_propagation/gold/typecheck_test.gold b/tests/type_propagation/gold/typecheck_test.gold index 208ae1c48..e9e89534c 100644 --- a/tests/type_propagation/gold/typecheck_test.gold +++ b/tests/type_propagation/gold/typecheck_test.gold @@ -8,34 +8,34 @@ main tests/type_propagation/typecheck_test.toit test_simple tests/type_propagation/typecheck_test.toit 0[022] - load null - 1[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // {False_} - 4[053] - invoke static id tests/type_propagation/typecheck_test.toit // {False_} + 1[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // [{Null_}] -> {False_} + 4[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{False_}] -> {False_} 7[041] - pop 1 8[026] - load smi 7 - 10[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // {True_} - 13[053] - invoke static id tests/type_propagation/typecheck_test.toit // {True_} + 10[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // [{SmallInteger_}] -> {True_} + 13[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{True_}] -> {True_} 16[041] - pop 1 17[020] - load literal 7.9000000000000003553 - 19[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // {False_} - 22[053] - invoke static id tests/type_propagation/typecheck_test.toit // {False_} + 19[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // [{float}] -> {False_} + 22[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{False_}] -> {False_} 25[041] - pop 1 26[020] - load literal kurt - 28[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // {False_} - 31[053] - invoke static id tests/type_propagation/typecheck_test.toit // {False_} + 28[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // [{String_}] -> {False_} + 31[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{False_}] -> {False_} 34[089] - return null S1 0 test_any tests/type_propagation/typecheck_test.toit 0[020] - load literal true - 2[053] - invoke static id tests/type_propagation/typecheck_test.toit // {True_} + 2[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{True_}] -> {True_} 5[041] - pop 1 6[020] - load literal true - 8[053] - invoke static id tests/type_propagation/typecheck_test.toit // {True_} + 8[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{True_}] -> {True_} 11[041] - pop 1 12[026] - load smi 7 - 14[053] - invoke static id tests/type_propagation/typecheck_test.toit // {SmallInteger_} + 14[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{SmallInteger_}] -> {SmallInteger_} 17[041] - pop 1 18[020] - load literal hest - 20[053] - invoke static id tests/type_propagation/typecheck_test.toit // {String_} + 20[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{String_}] -> {String_} 23[089] - return null S1 0 test_throws tests/type_propagation/typecheck_test.toit @@ -43,13 +43,13 @@ test_throws tests/type_propagation/typecheck_test.toit 5[038] - load block 0 7[022] - load null 8[022] - load null - 9[053] - invoke static catch /core/exceptions.toit // {*} + 9[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 12[040] - pop 2 14[029] - load [block] in test_throws tests/type_propagation/typecheck_test.toit 19[038] - load block 0 21[022] - load null 22[022] - load null - 23[053] - invoke static catch /core/exceptions.toit // {*} + 23[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 26[089] - return null S2 0 [block] in test_throws tests/type_propagation/typecheck_test.toit @@ -61,7 +61,7 @@ test_throws tests/type_propagation/typecheck_test.toit [block] in test_throws tests/type_propagation/typecheck_test.toit - argument 0: [block] 0[026] - load smi 7 - 2[053] - invoke static bar tests/type_propagation/typecheck_test.toit // {} + 2[053] - invoke static bar tests/type_propagation/typecheck_test.toit // [{SmallInteger_}] -> {} 5[088] - return S1 1 foo tests/type_propagation/typecheck_test.toit diff --git a/tests/type_propagation/gold/typecheck_test.gold-O2 b/tests/type_propagation/gold/typecheck_test.gold-O2 index eb720ba13..a13318b7b 100644 --- a/tests/type_propagation/gold/typecheck_test.gold-O2 +++ b/tests/type_propagation/gold/typecheck_test.gold-O2 @@ -8,34 +8,34 @@ main tests/type_propagation/typecheck_test.toit test_simple tests/type_propagation/typecheck_test.toit 0[022] - load null - 1[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // {False_} - 4[053] - invoke static id tests/type_propagation/typecheck_test.toit // {False_} + 1[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // [{Null_}] -> {False_} + 4[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{False_}] -> {False_} 7[041] - pop 1 8[026] - load smi 7 - 10[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // {True_} - 13[053] - invoke static id tests/type_propagation/typecheck_test.toit // {True_} + 10[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // [{SmallInteger_}] -> {True_} + 13[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{True_}] -> {True_} 16[041] - pop 1 17[020] - load literal 7.9000000000000003553 - 19[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // {False_} - 22[053] - invoke static id tests/type_propagation/typecheck_test.toit // {False_} + 19[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // [{float}] -> {False_} + 22[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{False_}] -> {False_} 25[041] - pop 1 26[020] - load literal kurt - 28[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // {False_} - 31[053] - invoke static id tests/type_propagation/typecheck_test.toit // {False_} + 28[053] - invoke static is_int tests/type_propagation/typecheck_test.toit // [{String_}] -> {False_} + 31[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{False_}] -> {False_} 34[089] - return null S1 0 test_any tests/type_propagation/typecheck_test.toit 0[020] - load literal true - 2[053] - invoke static id tests/type_propagation/typecheck_test.toit // {True_} + 2[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{True_}] -> {True_} 5[041] - pop 1 6[020] - load literal true - 8[053] - invoke static id tests/type_propagation/typecheck_test.toit // {True_} + 8[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{True_}] -> {True_} 11[041] - pop 1 12[026] - load smi 7 - 14[053] - invoke static id tests/type_propagation/typecheck_test.toit // {SmallInteger_} + 14[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{SmallInteger_}] -> {SmallInteger_} 17[041] - pop 1 18[020] - load literal hest - 20[053] - invoke static id tests/type_propagation/typecheck_test.toit // {String_} + 20[053] - invoke static id tests/type_propagation/typecheck_test.toit // [{String_}] -> {String_} 23[089] - return null S1 0 test_throws tests/type_propagation/typecheck_test.toit @@ -43,13 +43,13 @@ test_throws tests/type_propagation/typecheck_test.toit 5[038] - load block 0 7[022] - load null 8[022] - load null - 9[053] - invoke static catch /core/exceptions.toit // {*} + 9[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 12[040] - pop 2 14[029] - load [block] in test_throws tests/type_propagation/typecheck_test.toit 19[038] - load block 0 21[022] - load null 22[022] - load null - 23[053] - invoke static catch /core/exceptions.toit // {*} + 23[053] - invoke static catch /core/exceptions.toit // [[block], {Null_}, {Null_}] -> {*} 26[089] - return null S2 0 [block] in test_throws tests/type_propagation/typecheck_test.toit @@ -61,7 +61,7 @@ test_throws tests/type_propagation/typecheck_test.toit [block] in test_throws tests/type_propagation/typecheck_test.toit - argument 0: [block] 0[026] - load smi 7 - 2[053] - invoke static bar tests/type_propagation/typecheck_test.toit // {} + 2[053] - invoke static bar tests/type_propagation/typecheck_test.toit // [{SmallInteger_}] -> {} 5[088] - return S1 1 foo tests/type_propagation/typecheck_test.toit diff --git a/tools/dump_types.toit b/tools/dump_types.toit index ae0932c3b..bb9fdf922 100644 --- a/tools/dump_types.toit +++ b/tools/dump_types.toit @@ -63,14 +63,18 @@ show_types types/List snapshot_content/ByteArray -> none bundle := SnapshotBundle snapshot_content program := bundle.decode methods := {} - type_strings := {:} + input_strings := {:} + output_strings := {:} method_args := {:} types.do: | entry/Map | position := entry["position"] method/ToitMethod := ? - if entry.contains "type": + if entry.contains "output": method = program.method_from_absolute_bci position - type_strings[position] = type_string program entry["type"] + output_strings[position] = type_string program entry["output"] + if entry.contains "input": + input_strings[position] = entry["input"].map: | x | + type_string program x else: method = program.method_from_absolute_bci (position + ToitMethod.HEADER_SIZE) method_args[position] = entry["arguments"].map: | x | @@ -101,7 +105,9 @@ show_types types/List snapshot_content/ByteArray -> none else: print "" args := method_args.get method.id method.output program args --show_positions=show_positions: | position/int | - type_strings.get position + input_part := input_strings.get position + output_part := output_strings.get position + input_part ? "$input_part -> $output_part" : output_part type_string program/Program type/any -> string: if type == "[]": return "[block]"