Lines Matching refs:instr
102 void Store(GVNFlagSet flags, HInstruction* instr);
355 void HSideEffectMap::Store(GVNFlagSet flags, HInstruction* instr) {
360 data_[i] = instr;
402 HInstruction* instr = it.Current();
403 side_effects.Add(instr->ChangesFlags());
404 if (instr->IsDeoptimize()) {
549 HInstruction* instr = block->first();
550 while (instr != NULL) {
551 HInstruction* next = instr->next();
553 if (instr->CheckFlag(HValue::kUseGVN)) {
555 instr->id(),
556 instr->Mnemonic(),
557 *GetGVNFlagsString(instr->gvn_flags()),
559 bool can_hoist = !instr->gvn_flags().ContainsAnyOf(depends_flags);
566 for (int i = 0; i < instr->OperandCount(); ++i) {
567 if (instr->OperandAt(i)->IsDefinedAfter(pre_header)) {
572 if (inputs_loop_invariant && ShouldMove(instr, loop_header)) {
573 TRACE_GVN_1("Hoisting loop invariant instruction %d\n", instr->id());
575 instr->Unlink();
576 instr->InsertBefore(pre_header->end());
577 if (instr->HasSideEffects()) removed_side_effects_ = true;
587 first_time_depends->Add(instr->DependsOnFlags());
588 first_time_changes->Add(instr->ChangesFlags());
598 instr = next;
608 bool HGlobalValueNumberingPhase::ShouldMove(HInstruction* instr,
612 return AllowCodeMotion() && !instr->block()->IsDeoptimizing();
778 HInstruction* instr = it.Current();
779 if (instr->CheckFlag(HValue::kTrackSideEffectDominators)) {
784 if (instr->DependsOnFlags().Contains(depends_on_flag) &&
788 instr->id(),
789 instr->Mnemonic(),
792 instr->HandleSideEffectDominator(changes_flag, other);
797 if (!instr->IsLinked()) continue;
799 GVNFlagSet flags = instr->ChangesFlags();
804 dominators->Store(flags, instr);
805 TRACE_GVN_2("Instruction %d %s\n", instr->id(),
808 if (instr->CheckFlag(HValue::kUseGVN)) {
809 ASSERT(!instr->HasObservableSideEffects());
810 HValue* other = map->Lookup(instr);
812 ASSERT(instr->Equals(other) && other->Equals(instr));
814 instr->id(),
815 instr->Mnemonic(),
818 if (instr->HasSideEffects()) removed_side_effects_ = true;
819 instr->DeleteAndReplaceWith(other);
821 map->Add(instr, zone());