/** * Retrieve or allocate the variable accessor for this variable. This * version differs from getVariableAccessorForWrite only in its visibility * and the fact that it is synchronized against this field to ensure * volatile behavior of the variableAccessor field. * * @param tableMgr the VariableTableManager for which to allocate an * accessor, if it has not already been allocated. * @return the variable accessor appropriate for writes */ private synchronized VariableAccessor allocateVariableAccessor(VariableTableManager tableMgr) { if (variableAccessor == VariableAccessor.DUMMY_ACCESSOR) { variableAccessor = tableMgr.allocateVariableAccessor(name); } return variableAccessor; }
/** * Retrieve or allocate the variable accessor for this variable. This * version differs from getVariableAccessorForWrite only in its visibility * and the fact that it is synchronized against this field to ensure * volatile behavior of the variableAccessor field. * * @param tableMgr the VariableTableManager for which to allocate an * accessor, if it has not already been allocated. * @return the variable accessor appropriate for writes */ private synchronized VariableAccessor allocateVariableAccessor(VariableTableManager tableMgr) { if (variableAccessor == VariableAccessor.DUMMY_ACCESSOR) { variableAccessor = tableMgr.allocateVariableAccessor(name); } return variableAccessor; }
/** * Retrieve or allocate the variable accessor for this variable. This * version differs from getVariableAccessorForWrite only in its visibility * and the fact that it is synchronized against this field to ensure * volatile behavior of the variableAccessor field. * * @param tableMgr the VariableTableManager for which to allocate an * accessor, if it has not already been allocated. * @return the variable accessor appropriate for writes */ private synchronized VariableAccessor allocateVariableAccessor(VariableTableManager tableMgr) { if (variableAccessor == VariableAccessor.DUMMY_ACCESSOR) { variableAccessor = tableMgr.allocateVariableAccessor(name); } return variableAccessor; }
/** * Retrieve or allocate the variable accessor for this variable. This * version differs from getVariableAccessorForWrite only in its visibility * and the fact that it is synchronized against this field to ensure * volatile behavior of the variableAccessor field. * * @param tableMgr the VariableTableManager for which to allocate an * accessor, if it has not already been allocated. * @return the variable accessor appropriate for writes */ private synchronized VariableAccessor allocateVariableAccessor(VariableTableManager tableMgr) { if (variableAccessor == VariableAccessor.DUMMY_ACCESSOR) { variableAccessor = tableMgr.allocateVariableAccessor(name); } return variableAccessor; }
/** * Get the variable accessor for the given name with intent to use it for * writing. * * @param name the name of the variable * @return an accessor appropriate for writing */ public VariableAccessor getVariableAccessorForWrite(String name) { VariableAccessor ivarAccessor = variableAccessors.get(name); if (ivarAccessor == null) { synchronized (realClass) { Map<String, VariableAccessor> myVariableAccessors = variableAccessors; ivarAccessor = myVariableAccessors.get(name); if (ivarAccessor == null) { // allocate a new accessor and populate a new table ivarAccessor = allocateVariableAccessor(name); Map<String, VariableAccessor> newVariableAccessors = new HashMap<String, VariableAccessor>(myVariableAccessors.size() + 1); newVariableAccessors.putAll(myVariableAccessors); newVariableAccessors.put(name, ivarAccessor); variableAccessors = newVariableAccessors; } } } return ivarAccessor; }
/** * Get the variable accessor for the given name with intent to use it for * writing. * * @param name the name of the variable * @return an accessor appropriate for writing */ public VariableAccessor getVariableAccessorForWrite(String name) { VariableAccessor ivarAccessor = variableAccessors.get(name); if (ivarAccessor == null) { synchronized (realClass) { Map<String, VariableAccessor> myVariableAccessors = variableAccessors; ivarAccessor = myVariableAccessors.get(name); if (ivarAccessor == null) { // allocate a new accessor and populate a new table ivarAccessor = allocateVariableAccessor(name); Map<String, VariableAccessor> newVariableAccessors = new HashMap<String, VariableAccessor>(myVariableAccessors.size() + 1); newVariableAccessors.putAll(myVariableAccessors); newVariableAccessors.put(name, ivarAccessor); variableAccessors = newVariableAccessors; } } } return ivarAccessor; }
/** * Get the variable accessor for the given name with intent to use it for * writing. * * @param name the name of the variable * @return an accessor appropriate for writing */ public VariableAccessor getVariableAccessorForWrite(String name) { VariableAccessor ivarAccessor = variableAccessors.get(name); if (ivarAccessor == null) { synchronized (realClass) { Map<String, VariableAccessor> myVariableAccessors = variableAccessors; ivarAccessor = myVariableAccessors.get(name); if (ivarAccessor == null) { // allocate a new accessor and populate a new table ivarAccessor = allocateVariableAccessor(name); Map<String, VariableAccessor> newVariableAccessors = new HashMap<String, VariableAccessor>(myVariableAccessors.size() + 1); newVariableAccessors.putAll(myVariableAccessors); newVariableAccessors.put(name, ivarAccessor); variableAccessors = newVariableAccessors; } } } return ivarAccessor; }
/** * Get the variable accessor for the given name with intent to use it for * writing. * * @param name the name of the variable * @return an accessor appropriate for writing */ public VariableAccessor getVariableAccessorForWrite(String name) { VariableAccessor ivarAccessor = variableAccessors.get(name); if (ivarAccessor == null) { synchronized (realClass) { Map<String, VariableAccessor> myVariableAccessors = variableAccessors; ivarAccessor = myVariableAccessors.get(name); if (ivarAccessor == null) { // allocate a new accessor and populate a new table ivarAccessor = allocateVariableAccessor(name); Map<String, VariableAccessor> newVariableAccessors = new HashMap<String, VariableAccessor>(myVariableAccessors.size() + 1); newVariableAccessors.putAll(myVariableAccessors); newVariableAccessors.put(name, ivarAccessor); variableAccessors = newVariableAccessors; } } } return ivarAccessor; }