Lines Matching defs:merge
796 // Tracks whether this merge was ever reached. Uses precise reachability, like
3603 void InitMerge(Merge<Value>* merge, uint32_t arity, func get_val) {
3604 merge->arity = arity;
3606 merge->vals.first = get_val(0);
3608 merge->vals.array = this->zone()->template NewArray<Value>(arity);
3610 merge->vals.array[i] = get_val(i);
3624 // The merge needs to be instantiated with Values of the correct
3746 // the loop's end merge.
5143 void PushMergeValues(Control* c, Merge<Value>* merge) {
5146 DCHECK(merge == &c->start_merge || merge == &c->end_merge);
5149 if (merge->arity == 1) {
5153 *stack_end_++ = merge->vals.first;
5155 EnsureStackSpace(merge->arity);
5156 for (uint32_t i = 0; i < merge->arity; i++) {
5157 *stack_end_++ = merge->vals.array[i];
5160 DCHECK_EQ(c->stack_depth + merge->arity, stack_size());
5263 // compatible with {merge} based on their number and types. Disregard the
5265 // #(stack elements) == {merge->arity}, otherwise
5266 // #(stack elements) >= {merge->arity}.
5268 // top of the stack are compatible with {merge}. If {push_branch_values},
5269 // push back to the stack values based on the type of {merge} (this is
5277 bool TypeCheckStackAgainstMerge(uint32_t drop_values, Merge<Value>* merge) {
5286 uint32_t arity = merge->arity;
5299 // Typecheck the topmost {merge->arity} values on the stack.
5303 Value& old = (*merge)[i];
5322 Peek(depth, i, (*merge)[i].type);
5334 stack_base[i].type = (*merge)[i].type;
5377 this->DecodeError("type error in merge[%u] (expected %s, got %s)", i,