/*
 * Copyright (c) 2010, 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.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package jdk.nashorn.internal.runtime;

Interface for getting and setting properties from script objects This can be a plugin point for e.g. tagged values or alternative array property getters. The interface is engineered with the combinatorially exhaustive combination of types by purpose, for speed, as currently HotSpot is not good enough at removing boxing.
/** * Interface for getting and setting properties from script objects * This can be a plugin point for e.g. tagged values or alternative * array property getters. * * The interface is engineered with the combinatorially exhaustive * combination of types by purpose, for speed, as currently HotSpot is not * good enough at removing boxing. */
public interface PropertyAccess {
Get the value for a given key and return it as an int
Params:
  • key – the key
  • programPoint – or INVALID_PROGRAM_POINT if pessimistic
Returns:the value
/** * Get the value for a given key and return it as an int * @param key the key * @param programPoint or INVALID_PROGRAM_POINT if pessimistic * @return the value */
public int getInt(Object key, int programPoint);
Get the value for a given key and return it as an int
Params:
  • key – the key
  • programPoint – or INVALID_PROGRAM_POINT if pessimistic
Returns:the value
/** * Get the value for a given key and return it as an int * @param key the key * @param programPoint or INVALID_PROGRAM_POINT if pessimistic * @return the value */
public int getInt(double key, int programPoint);
Get the value for a given key and return it as an int
Params:
  • key – the key
  • programPoint – or INVALID_PROGRAM_POINT if pessimistic
Returns:the value
/** * Get the value for a given key and return it as an int * @param key the key * @param programPoint or INVALID_PROGRAM_POINT if pessimistic * @return the value */
public int getInt(int key, int programPoint);
Get the value for a given key and return it as a double
Params:
  • key – the key
  • programPoint – or INVALID_PROGRAM_POINT if pessimistic
Returns:the value
/** * Get the value for a given key and return it as a double * @param key the key * @param programPoint or INVALID_PROGRAM_POINT if pessimistic * @return the value */
public double getDouble(Object key, int programPoint);
Get the value for a given key and return it as a double
Params:
  • key – the key
  • programPoint – or INVALID_PROGRAM_POINT if pessimistic
Returns:the value
/** * Get the value for a given key and return it as a double * @param key the key * @param programPoint or INVALID_PROGRAM_POINT if pessimistic * @return the value */
public double getDouble(double key, int programPoint);
Get the value for a given key and return it as a double
Params:
  • key – the key
  • programPoint – or INVALID_PROGRAM_POINT if pessimistic
Returns:the value
/** * Get the value for a given key and return it as a double * @param key the key * @param programPoint or INVALID_PROGRAM_POINT if pessimistic * @return the value */
public double getDouble(int key, int programPoint);
Get the value for a given key and return it as an Object
Params:
  • key – the key
Returns:the value
/** * Get the value for a given key and return it as an Object * @param key the key * @return the value */
public Object get(Object key);
Get the value for a given key and return it as an Object
Params:
  • key – the key
Returns:the value
/** * Get the value for a given key and return it as an Object * @param key the key * @return the value */
public Object get(double key);
Get the value for a given key and return it as an Object
Params:
  • key – the key
Returns:the value
/** * Get the value for a given key and return it as an Object * @param key the key * @return the value */
public Object get(int key);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(Object key, int value, int flags);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(Object key, double value, int flags);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(Object key, Object value, int flags);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(double key, int value, int flags);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(double key, double value, int flags);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(double key, Object value, int flags);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(int key, int value, int flags);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(int key, double value, int flags);
Set the value of a given key
Params:
  • key – the key
  • value – the value
  • flags – call site flags
/** * Set the value of a given key * @param key the key * @param value the value * @param flags call site flags */
public void set(int key, Object value, int flags);
Check if the given key exists anywhere in the proto chain
Params:
  • key – the key
Returns:true if key exists
/** * Check if the given key exists anywhere in the proto chain * @param key the key * @return true if key exists */
public boolean has(Object key);
Check if the given key exists anywhere in the proto chain
Params:
  • key – the key
Returns:true if key exists
/** * Check if the given key exists anywhere in the proto chain * @param key the key * @return true if key exists */
public boolean has(int key);
Check if the given key exists anywhere in the proto chain
Params:
  • key – the key
Returns:true if key exists
/** * Check if the given key exists anywhere in the proto chain * @param key the key * @return true if key exists */
public boolean has(double key);
Check if the given key exists directly in the implementor
Params:
  • key – the key
Returns:true if key exists
/** * Check if the given key exists directly in the implementor * @param key the key * @return true if key exists */
public boolean hasOwnProperty(Object key);
Check if the given key exists directly in the implementor
Params:
  • key – the key
Returns:true if key exists
/** * Check if the given key exists directly in the implementor * @param key the key * @return true if key exists */
public boolean hasOwnProperty(int key);
Check if the given key exists directly in the implementor
Params:
  • key – the key
Returns:true if key exists
/** * Check if the given key exists directly in the implementor * @param key the key * @return true if key exists */
public boolean hasOwnProperty(double key);
Delete a property with the given key from the implementor
Params:
  • key – the key
  • strict – are we in strict mode
Returns:true if deletion succeeded, false otherwise
/** * Delete a property with the given key from the implementor * @param key the key * @param strict are we in strict mode * @return true if deletion succeeded, false otherwise */
public boolean delete(int key, boolean strict);
Delete a property with the given key from the implementor
Params:
  • key – the key
  • strict – are we in strict mode
Returns:true if deletion succeeded, false otherwise
/** * Delete a property with the given key from the implementor * @param key the key * @param strict are we in strict mode * @return true if deletion succeeded, false otherwise */
public boolean delete(double key, boolean strict);
Delete a property with the given key from the implementor
Params:
  • key – the key
  • strict – are we in strict mode
Returns:true if deletion succeeded, false otherwise
/** * Delete a property with the given key from the implementor * @param key the key * @param strict are we in strict mode * @return true if deletion succeeded, false otherwise */
public boolean delete(Object key, boolean strict); }