1 /*
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
398 _wrote_fields = false;
399 _alloc_with_final = NULL;
400 _entry_bci = InvocationEntryBci;
401 _tf = NULL;
402 _block = NULL;
403 _first_return = true;
404 _replaced_nodes_for_exceptions = false;
405 _new_idx = C->unique();
406 debug_only(_block_count = -1);
407 debug_only(_blocks = (Block*)-1);
408 #ifndef PRODUCT
409 if (PrintCompilation || PrintOpto) {
410 // Make sure I have an inline tree, so I can print messages about it.
411 JVMState* ilt_caller = is_osr_parse() ? caller->caller() : caller;
412 InlineTree::find_subtree_from_root(C->ilt(), ilt_caller, parse_method);
413 }
414 _max_switch_depth = 0;
415 _est_switch_depth = 0;
416 #endif
417
418 _tf = TypeFunc::make(method());
419 _iter.reset_to_method(method());
420 _flow = method()->get_flow_analysis();
421 if (_flow->failing()) {
422 C->record_method_not_compilable_all_tiers(_flow->failure_reason());
423 }
424
425 #ifndef PRODUCT
426 if (_flow->has_irreducible_entry()) {
427 C->set_parsed_irreducible_loop(true);
428 }
429 #endif
430
431 if (_expected_uses <= 0) {
432 _prof_factor = 1;
433 } else {
434 float prof_total = parse_method->interpreter_invocation_count();
435 if (prof_total <= _expected_uses) {
436 _prof_factor = 1;
437 } else {
|
1 /*
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
398 _wrote_fields = false;
399 _alloc_with_final = NULL;
400 _entry_bci = InvocationEntryBci;
401 _tf = NULL;
402 _block = NULL;
403 _first_return = true;
404 _replaced_nodes_for_exceptions = false;
405 _new_idx = C->unique();
406 debug_only(_block_count = -1);
407 debug_only(_blocks = (Block*)-1);
408 #ifndef PRODUCT
409 if (PrintCompilation || PrintOpto) {
410 // Make sure I have an inline tree, so I can print messages about it.
411 JVMState* ilt_caller = is_osr_parse() ? caller->caller() : caller;
412 InlineTree::find_subtree_from_root(C->ilt(), ilt_caller, parse_method);
413 }
414 _max_switch_depth = 0;
415 _est_switch_depth = 0;
416 #endif
417
418 if (parse_method->has_reserved_stack_access()) {
419 C->set_has_reserved_stack_access(true);
420 }
421
422 _tf = TypeFunc::make(method());
423 _iter.reset_to_method(method());
424 _flow = method()->get_flow_analysis();
425 if (_flow->failing()) {
426 C->record_method_not_compilable_all_tiers(_flow->failure_reason());
427 }
428
429 #ifndef PRODUCT
430 if (_flow->has_irreducible_entry()) {
431 C->set_parsed_irreducible_loop(true);
432 }
433 #endif
434
435 if (_expected_uses <= 0) {
436 _prof_factor = 1;
437 } else {
438 float prof_total = parse_method->interpreter_invocation_count();
439 if (prof_total <= _expected_uses) {
440 _prof_factor = 1;
441 } else {
|