src/share/vm/ci/ciField.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/ci/ciField.cpp	Mon Aug 19 07:38:54 2013
--- new/src/share/vm/ci/ciField.cpp	Mon Aug 19 07:38:53 2013

*** 1,7 **** --- 1,7 ---- /* ! * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. ! * 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 **** --- 73,82 ---- 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);
*** 114,124 **** --- 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) { ! // _cp_index and _type have already been set. ! // _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 **** --- 143,152 ---- } 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());
*** 342,357 **** --- 339,353 ---- 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)); ! 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