src/hotspot/share/ci/bcEscapeAnalyzer.cpp
changeset 58273 08a5148e7c4e
parent 54052 a2d3ca8062b9
child 58962 2dcfc28a314d
equal deleted inserted replaced
58272:e27564cd10e3 58273:08a5148e7c4e
     1 /*
     1 /*
     2  * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     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
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   857           ciField* field = s.get_field(ignored_will_link);
   857           ciField* field = s.get_field(ignored_will_link);
   858           BasicType field_type = field->type()->basic_type();
   858           BasicType field_type = field->type()->basic_type();
   859           if (s.cur_bc() != Bytecodes::_getstatic) {
   859           if (s.cur_bc() != Bytecodes::_getstatic) {
   860             set_method_escape(state.apop());
   860             set_method_escape(state.apop());
   861           }
   861           }
   862           if (field_type == T_OBJECT || field_type == T_ARRAY) {
   862           if (is_reference_type(field_type)) {
   863             state.apush(unknown_obj);
   863             state.apush(unknown_obj);
   864           } else if (type2size[field_type] == 1) {
   864           } else if (type2size[field_type] == 1) {
   865             state.spush();
   865             state.spush();
   866           } else {
   866           } else {
   867             state.lpush();
   867             state.lpush();
   871       case Bytecodes::_putstatic:
   871       case Bytecodes::_putstatic:
   872       case Bytecodes::_putfield:
   872       case Bytecodes::_putfield:
   873         { bool will_link;
   873         { bool will_link;
   874           ciField* field = s.get_field(will_link);
   874           ciField* field = s.get_field(will_link);
   875           BasicType field_type = field->type()->basic_type();
   875           BasicType field_type = field->type()->basic_type();
   876           if (field_type == T_OBJECT || field_type == T_ARRAY) {
   876           if (is_reference_type(field_type)) {
   877             set_global_escape(state.apop());
   877             set_global_escape(state.apop());
   878           } else if (type2size[field_type] == 1) {
   878           } else if (type2size[field_type] == 1) {
   879             state.spop();
   879             state.spop();
   880           } else {
   880           } else {
   881             state.lpop();
   881             state.lpop();