src/share/vm/ci/ciField.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8014013 Cdiff src/share/vm/ci/ciField.cpp

src/share/vm/ci/ciField.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1999, 2012, 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. --- 1,7 ---- /* ! * Copyright (c) 1999, 2013, 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.
*** 73,83 **** assert(ciObjectFactory::is_initialized(), "not a shared field"); assert(klass->get_instanceKlass()->is_linked(), "must be linked before using its constan-pool"); - _cp_index = index; constantPoolHandle cpool(thread, klass->get_instanceKlass()->constants()); // Get the field's name, signature, and type. Symbol* name = cpool->name_ref_at(index); _name = ciEnv::current(thread)->get_symbol(name); --- 73,82 ----
*** 114,124 **** klass)->as_instance_klass(); // The declared holder of this field may not have been loaded. // Bail out with partial field information. if (!holder_is_accessible) { ! // _cp_index and _type have already been set. // The default values for _flags and _constant_value will suffice. // We need values for _holder, _offset, and _is_constant, _holder = declared_holder; _offset = -1; _is_constant = false; --- 113,123 ---- klass)->as_instance_klass(); // The declared holder of this field may not have been loaded. // Bail out with partial field information. if (!holder_is_accessible) { ! // _type has already been set. // The default values for _flags and _constant_value will suffice. // We need values for _holder, _offset, and _is_constant, _holder = declared_holder; _offset = -1; _is_constant = false;
*** 144,155 **** } ciField::ciField(fieldDescriptor *fd): _known_to_link_with_put(NULL), _known_to_link_with_get(NULL) { ASSERT_IN_VM; - _cp_index = -1; - // Get the field's name, signature, and type. ciEnv* env = CURRENT_ENV; _name = env->get_symbol(fd->name()); _signature = env->get_symbol(fd->signature()); --- 143,152 ----
*** 342,357 **** if (_known_to_link_with_get == accessing_klass) { return true; } } ! FieldAccessInfo result; ! constantPoolHandle c_pool(THREAD, ! accessing_klass->get_instanceKlass()->constants()); ! LinkResolver::resolve_field(result, c_pool, _cp_index, ! Bytecodes::java_code(bc), ! true, false, KILL_COMPILE_ON_FATAL_(false)); // update the hit-cache, unless there is a problem with memory scoping: if (accessing_klass->is_shared() || !is_shared()) { if (is_put) { _known_to_link_with_put = accessing_klass; --- 339,353 ---- if (_known_to_link_with_get == accessing_klass) { return true; } } ! fieldDescriptor result; ! LinkResolver::resolve_field(result, _holder->get_instanceKlass(), ! _name->get_symbol(), _signature->get_symbol(), ! accessing_klass->get_Klass(), bc, true, false, ! KILL_COMPILE_ON_FATAL_(false)); // update the hit-cache, unless there is a problem with memory scoping: if (accessing_klass->is_shared() || !is_shared()) { if (is_put) { _known_to_link_with_put = accessing_klass;
src/share/vm/ci/ciField.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File