--- a/hotspot/src/share/vm/c1/c1_IR.cpp Wed Sep 22 23:51:03 2010 -0700
+++ b/hotspot/src/share/vm/c1/c1_IR.cpp Tue Dec 29 19:08:54 2009 +0100
@@ -116,24 +116,6 @@
// Implementation of IRScope
-
-BlockBegin* IRScope::header_block(BlockBegin* entry, BlockBegin::Flag f, ValueStack* state) {
- if (entry == NULL) return NULL;
- assert(entry->is_set(f), "entry/flag mismatch");
- // create header block
- BlockBegin* h = new BlockBegin(entry->bci());
- BlockEnd* g = new Goto(entry, false);
- h->set_next(g, entry->bci());
- h->set_end(g);
- h->set(f);
- // setup header block end state
- ValueStack* s = state->copy(); // can use copy since stack is empty (=> no phis)
- assert(s->stack_is_empty(), "must have empty stack at entry point");
- g->set_state(s);
- return h;
-}
-
-
BlockBegin* IRScope::build_graph(Compilation* compilation, int osr_bci) {
GraphBuilder gm(compilation, this);
NOT_PRODUCT(if (PrintValueNumbering && Verbose) gm.print_stats());
@@ -145,12 +127,9 @@
IRScope::IRScope(Compilation* compilation, IRScope* caller, int caller_bci, ciMethod* method, int osr_bci, bool create_graph)
: _callees(2)
, _compilation(compilation)
-, _lock_stack_size(-1)
, _requires_phi_function(method->max_locals())
{
_caller = caller;
- _caller_bci = caller == NULL ? -1 : caller_bci;
- _caller_state = NULL; // Must be set later if needed
_level = caller == NULL ? 0 : caller->level() + 1;
_method = method;
_xhandlers = new XHandlers(method);
@@ -182,32 +161,6 @@
}
-void IRScope::compute_lock_stack_size() {
- if (!InlineMethodsWithExceptionHandlers) {
- _lock_stack_size = 0;
- return;
- }
-
- // Figure out whether we have to preserve expression stack elements
- // for parent scopes, and if so, how many
- IRScope* cur_scope = this;
- while (cur_scope != NULL && !cur_scope->xhandlers()->has_handlers()) {
- cur_scope = cur_scope->caller();
- }
- _lock_stack_size = (cur_scope == NULL ? 0 :
- (cur_scope->caller_state() == NULL ? 0 :
- cur_scope->caller_state()->stack_size()));
-}
-
-int IRScope::top_scope_bci() const {
- assert(!is_top_scope(), "no correct answer for top scope possible");
- const IRScope* scope = this;
- while (!scope->caller()->is_top_scope()) {
- scope = scope->caller();
- }
- return scope->caller_bci();
-}
-
bool IRScopeDebugInfo::should_reexecute() {
ciMethod* cur_method = scope()->method();
int cur_bci = bci();
@@ -222,37 +175,24 @@
// Implementation of CodeEmitInfo
// Stack must be NON-null
-CodeEmitInfo::CodeEmitInfo(int bci, ValueStack* stack, XHandlers* exception_handlers)
+CodeEmitInfo::CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers)
: _scope(stack->scope())
- , _bci(bci)
, _scope_debug_info(NULL)
, _oop_map(NULL)
, _stack(stack)
, _exception_handlers(exception_handlers)
- , _next(NULL)
- , _id(-1)
, _is_method_handle_invoke(false) {
assert(_stack != NULL, "must be non null");
- assert(_bci == SynchronizationEntryBCI || Bytecodes::is_defined(scope()->method()->java_code_at_bci(_bci)), "make sure bci points at a real bytecode");
}
-CodeEmitInfo::CodeEmitInfo(CodeEmitInfo* info, bool lock_stack_only)
+CodeEmitInfo::CodeEmitInfo(CodeEmitInfo* info, ValueStack* stack)
: _scope(info->_scope)
, _exception_handlers(NULL)
- , _bci(info->_bci)
, _scope_debug_info(NULL)
, _oop_map(NULL)
+ , _stack(stack == NULL ? info->_stack : stack)
, _is_method_handle_invoke(info->_is_method_handle_invoke) {
- if (lock_stack_only) {
- if (info->_stack != NULL) {
- _stack = info->_stack->copy_locks();
- } else {
- _stack = NULL;
- }
- } else {
- _stack = info->_stack;
- }
// deep copy of exception handlers
if (info->_exception_handlers != NULL) {
@@ -273,8 +213,6 @@
assert(_oop_map != NULL, "oop map must already exist");
assert(opr->is_single_cpu(), "should not call otherwise");
- int frame_size = frame_map()->framesize();
- int arg_count = frame_map()->oop_map_arg_count();
VMReg name = frame_map()->regname(opr);
_oop_map->set_oop(name);
}
@@ -383,8 +321,7 @@
void visit(Value* n) {
// Local instructions and Phis for expression stack values at the
// start of basic blocks are not added to the instruction list
- if ((*n)->bci() == -99 && (*n)->as_Local() == NULL &&
- (*n)->as_Phi() == NULL) {
+ if (!(*n)->is_linked()&& (*n)->can_be_linked()) {
assert(false, "a node was not appended to the graph");
Compilation::current()->bailout("a node was not appended to the graph");
}
@@ -1338,7 +1275,7 @@
// need to remove this instruction from the instruction stream
if (n->subst() != n) {
assert(last != NULL, "must have last");
- last->set_next(n->next(), n->next()->bci());
+ last->set_next(n->next());
} else {
last = n;
}