Removing check instructions is so utterly wrong and dangerous that I can't
bring myself to even try to help you. Just don't do it!


On Wed, Nov 5, 2014 at 8:19 AM, Gabriel Southern <[email protected]>
wrote:

> I'm experimenting with removing deoptimization checks and I have a
> question about how to remove hydrogen instructions.
>
> I'm looking at a benchmark where the CheckMaps deoptimization checks are
> never triggered and I'm trying to remove them.  I know this is not safe in
> the general case, but when I traced the deoptimizations for this benchmark
> there were not any that were triggered because of CheckMaps.
>
> I've tried to follow the HDeadCodeEliminationPhase as a guide because what
> I want to do is delete instructions that match a certain criteria, so I
> thought that pass might be a good example.  The main loop in my pass is:
>
>   for (int i = 0; i < graph()->blocks()->length(); ++i) {
>     HBasicBlock* block = graph()->blocks()->at(i);
>     for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
>       HInstruction* instr = it.Current();
>       if (instr->opcode() == HValue::kCheckMaps) {
>         instr->DeleteAndReplaceWith(NULL);
>       }
>     }
>   }
>
> When I run this and just print the list of instructions that will be
> removed the list looks okay.  However if I actually delete the instruction
> I get a runtime error as follows:
>
> #
> # Fatal error in ../src/objects.cc, line 10380
> # unreachable code
> #
>
> ==== C stack trace ===============================
>
>  1: V8_Fatal
>  2:
> v8::internal::Code::FindAndReplace(v8::internal::Code::FindAndReplacePattern
> const&)
>  3:
> v8::internal::CodeStub::GetCodeCopy(v8::internal::Code::FindAndReplacePattern
> const&)
>  4:
> v8::internal::PropertyICCompiler::ComputeCompareNil(v8::internal::Handle<v8::internal::Map>,
> v8::internal::CompareNilICStub*)
>  5:
> v8::internal::CompareNilIC::CompareNil(v8::internal::Handle<v8::internal::Object>)
>  6: ??
>  7: v8::internal::CompareNilIC_Miss(int, v8::internal::Object**,
> v8::internal::Isolate*)
>  8: ??
> Segmentation fault (core dumped)
>
> I'm wondering if anyone has suggestions for what I can look at it
> understand what's going on and debug the problem.  Obviously the specific
> thing I'm trying to do of removing CheckMaps is not something that should
> work in general.  But I think it should be possible to remove a hydrogen
> instruction during the optimization phase.  I've tried to pattern my
> attempt off of the existing code, but obviously I'm missing something.  If
> anyone has suggestions about what I should try that is appreciated.
>
> Thanks,
>
> Gabriel
>
>  --
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
> ---
> You received this message because you are subscribed to the Google Groups
> "v8-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to