Mercurial > hg > truffle
diff src/share/vm/runtime/deoptimization.cpp @ 5129:51111665eda6
Support for recording a leaf graph id for each deoptimization point in the debug info.
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Wed, 21 Mar 2012 10:47:02 +0100 |
parents | 1b907994bf2d |
children | ab038e0d6b43 |
line wrap: on
line diff
--- a/src/share/vm/runtime/deoptimization.cpp Fri Mar 16 11:03:54 2012 +0100 +++ b/src/share/vm/runtime/deoptimization.cpp Wed Mar 21 10:47:02 2012 +0100 @@ -86,6 +86,11 @@ #endif #endif +#ifdef GRAAL +#include "graal/graalCompiler.hpp" +#endif + + bool DeoptimizationMarker::_is_active = false; Deoptimization::UnrollBlock::UnrollBlock(int size_of_deoptimized_frame, @@ -201,6 +206,19 @@ // Create a growable array of VFrames where each VFrame represents an inlined // Java frame. This storage is allocated with the usual system arena. assert(deoptee.is_compiled_frame(), "Wrong frame type"); + +#ifdef GRAAL + PcDesc* pc_desc = ((nmethod*) deoptee.cb())->pc_desc_at(deoptee.pc()); + int decode_offset; + if (pc_desc != NULL && pc_desc->leaf_graph_id() != -1) { + GraalCompiler* compiler = (GraalCompiler*) ((nmethod*) deoptee.cb())->compiler(); + if (PrintDeoptimizationDetails) { + tty->print_cr("leaf graph id: %d", pc_desc->leaf_graph_id()); + } + compiler->deopt_leaf_graph(pc_desc->leaf_graph_id()); + } +#endif + GrowableArray<compiledVFrame*>* chunk = new GrowableArray<compiledVFrame*>(10); vframe* vf = vframe::new_vframe(&deoptee, &map, thread); while (!vf->is_top()) {