< prev index next >
src/share/vm/opto/output.cpp
Print this page
rev 12121 : [mq]: all_changes.patch
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -1204,17 +1204,23 @@
current_offset == last_avoid_back_to_back_offset) {
// Avoid back to back some instructions.
padding = nop_size;
}
- if(padding > 0) {
+ if (padding > 0) {
assert((padding % nop_size) == 0, "padding is not a multiple of NOP size");
int nops_cnt = padding / nop_size;
MachNode *nop = new MachNopNode(nops_cnt);
block->insert_node(nop, j++);
last_inst++;
_cfg->map_node_to_block(nop, block);
+ // Ensure enough space.
+ cb->insts()->maybe_expand_to_ensure_remaining(MAX_inst_size);
+ if ((cb->blob() == NULL) || (!CompileBroker::should_compile_new_jobs())) {
+ C->record_failure("CodeCache is full");
+ return;
+ }
nop->emit(*cb, _regalloc);
cb->flush_bundle(true);
current_offset = cb->insts_size();
}
< prev index next >