Java 类jdk.nashorn.internal.runtime.PropertyDescriptor 实例源码

项目:OpenJSharp    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:OpenJSharp    文件:GenericPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor other) {
    if (has(CONFIGURABLE) && other.has(CONFIGURABLE)) {
        if (isConfigurable() != other.isConfigurable()) {
            return false;
        }
    }

    if (has(ENUMERABLE) && other.has(ENUMERABLE)) {
        if (isEnumerable() != other.isEnumerable()) {
            return false;
        }
    }

    return true;
}
项目:openjdk-jdk10    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:openjdk-jdk10    文件:GenericPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor other) {
    if (has(CONFIGURABLE) && other.has(CONFIGURABLE)) {
        if (isConfigurable() != other.isConfigurable()) {
            return false;
        }
    }

    if (has(ENUMERABLE) && other.has(ENUMERABLE)) {
        if (isEnumerable() != other.isEnumerable()) {
            return false;
        }
    }

    return true;
}
项目:openjdk9    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:openjdk9    文件:GenericPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor other) {
    if (has(CONFIGURABLE) && other.has(CONFIGURABLE)) {
        if (isConfigurable() != other.isConfigurable()) {
            return false;
        }
    }

    if (has(ENUMERABLE) && other.has(ENUMERABLE)) {
        if (isEnumerable() != other.isEnumerable()) {
            return false;
        }
    }

    return true;
}
项目:kaziranga    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:kaziranga    文件:GenericPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor other) {
    if (has(CONFIGURABLE) && other.has(CONFIGURABLE)) {
        if (isConfigurable() != other.isConfigurable()) {
            return false;
        }
    }

    if (has(ENUMERABLE) && other.has(ENUMERABLE)) {
        if (isEnumerable() != other.isEnumerable()) {
            return false;
        }
    }

    return true;
}
项目:lookaside_java-1.8.0-openjdk    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:lookaside_java-1.8.0-openjdk    文件:GenericPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor other) {
    if (has(CONFIGURABLE) && other.has(CONFIGURABLE)) {
        if (isConfigurable() != other.isConfigurable()) {
            return false;
        }
    }

    if (has(ENUMERABLE) && other.has(ENUMERABLE)) {
        if (isEnumerable() != other.isEnumerable()) {
            return false;
        }
    }

    return true;
}
项目:jdk8u_nashorn    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:jdk8u_nashorn    文件:GenericPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor other) {
    if (has(CONFIGURABLE) && other.has(CONFIGURABLE)) {
        if (isConfigurable() != other.isConfigurable()) {
            return false;
        }
    }

    if (has(ENUMERABLE) && other.has(ENUMERABLE)) {
        if (isEnumerable() != other.isEnumerable()) {
            return false;
        }
    }

    return true;
}
项目:infobip-open-jdk-8    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:infobip-open-jdk-8    文件:GenericPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor other) {
    if (has(CONFIGURABLE) && other.has(CONFIGURABLE)) {
        if (isConfigurable() != other.isConfigurable()) {
            return false;
        }
    }

    if (has(ENUMERABLE) && other.has(ENUMERABLE)) {
        if (isEnumerable() != other.isEnumerable()) {
            return false;
        }
    }

    return true;
}
项目:OLD-OpenJDK8    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:nashorn-backport    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:nashorn    文件:GenericPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    return this;
}
项目:OpenJSharp    文件:NativeArguments.java   
/**
 * ECMA 15.4.5.1 [[DefineOwnProperty]] ( P, Desc, Throw ) as specialized in
 * ECMA 10.6 for Arguments object.
 */
@Override
public boolean defineOwnProperty(final String key, final Object propertyDesc, final boolean reject) {
    final int index = ArrayIndex.getArrayIndex(key);
    if (index >= 0) {
        final boolean isMapped = isMapped(index);
        final Object oldValue = isMapped ? getArray().getObject(index) : null;

        if (!super.defineOwnProperty(key, propertyDesc, false)) {
            if (reject) {
                throw typeError("cant.redefine.property",  key, ScriptRuntime.safeToString(this));
            }
            return false;
        }

        if (isMapped) {
            // When mapped argument is redefined, if new descriptor is accessor property
            // or data-non-writable property, we have to "unmap" (unlink).
            final PropertyDescriptor desc = toPropertyDescriptor(Global.instance(), propertyDesc);
            if (desc.type() == PropertyDescriptor.ACCESSOR) {
                setDeleted(index, oldValue);
            } else if (desc.has(PropertyDescriptor.WRITABLE) && !desc.isWritable()) {
                // delete and set value from new descriptor if it has one, otherwise use old value
                setDeleted(index, desc.has(PropertyDescriptor.VALUE) ? desc.getValue() : oldValue);
            } else if (desc.has(PropertyDescriptor.VALUE)) {
                setArray(getArray().set(index, desc.getValue(), false));
            }
        }

        return true;
    }

    return super.defineOwnProperty(key, propertyDesc, reject);
}
项目:OpenJSharp    文件:Global.java   
/**
 * Create a new ECMAScript AccessorPropertyDescriptor object.
 *
 * @param get getter function of the user accessor property
 * @param set setter function of the user accessor property
 * @param configurable is the property configurable?
 * @param enumerable is the property enumerable?
 * @return newly created AccessorPropertyDescriptor object
 */
public PropertyDescriptor newAccessorDescriptor(final Object get, final Object set, final boolean configurable, final boolean enumerable) {
    final AccessorPropertyDescriptor desc = new AccessorPropertyDescriptor(configurable, enumerable, get == null ? UNDEFINED : get, set == null ? UNDEFINED : set, this);

    if (get == null) {
        desc.delete(PropertyDescriptor.GET, false);
    }

    if (set == null) {
        desc.delete(PropertyDescriptor.SET, false);
    }

    return desc;
}
项目:OpenJSharp    文件:DataPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    if (sobj.has(WRITABLE)) {
        this.writable = JSType.toBoolean(sobj.get(WRITABLE));
    } else {
        delete(WRITABLE, false);
    }

    if (sobj.has(VALUE)) {
        this.value = sobj.get(VALUE);
    } else {
        delete(VALUE, false);
    }

    return this;
}
项目:OpenJSharp    文件:DataPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor otherDesc) {
    if (! (otherDesc instanceof DataPropertyDescriptor)) {
        return false;
    }

    final DataPropertyDescriptor other = (DataPropertyDescriptor)otherDesc;
    return (!has(CONFIGURABLE) || sameValue(configurable, other.configurable)) &&
           (!has(ENUMERABLE) || sameValue(enumerable, other.enumerable)) &&
           (!has(WRITABLE) || sameValue(writable, other.writable)) &&
           (!has(VALUE) || sameValue(value, other.value));
}
项目:OpenJSharp    文件:AccessorPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    if (sobj.has(GET)) {
        final Object getter = sobj.get(GET);
        if (getter == UNDEFINED || getter instanceof ScriptFunction) {
            this.get = getter;
        } else {
            throw typeError("not.a.function", ScriptRuntime.safeToString(getter));
        }
    } else {
        delete(GET, false);
    }

    if (sobj.has(SET)) {
        final Object setter = sobj.get(SET);
        if (setter == UNDEFINED || setter instanceof ScriptFunction) {
            this.set = setter;
        } else {
            throw typeError("not.a.function", ScriptRuntime.safeToString(setter));
        }
    } else {
        delete(SET, false);
    }

    return this;
}
项目:OpenJSharp    文件:AccessorPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor otherDesc) {
    if (! (otherDesc instanceof AccessorPropertyDescriptor)) {
        return false;
    }
    final AccessorPropertyDescriptor other = (AccessorPropertyDescriptor)otherDesc;
    return (!has(CONFIGURABLE) || sameValue(configurable, other.configurable)) &&
           (!has(ENUMERABLE) || sameValue(enumerable, other.enumerable)) &&
           (!has(GET) || sameValue(get, other.get)) &&
           (!has(SET) || sameValue(set, other.set));
}
项目:openjdk-jdk10    文件:NativeArguments.java   
/**
 * ECMA 15.4.5.1 [[DefineOwnProperty]] ( P, Desc, Throw ) as specialized in
 * ECMA 10.6 for Arguments object.
 */
@Override
public boolean defineOwnProperty(final Object key, final Object propertyDesc, final boolean reject) {
    final int index = ArrayIndex.getArrayIndex(key);
    if (index >= 0) {
        final boolean isMapped = isMapped(index);
        final Object oldValue = isMapped ? getArray().getObject(index) : null;

        if (!super.defineOwnProperty(key, propertyDesc, false)) {
            if (reject) {
                throw typeError("cant.redefine.property",  key.toString(), ScriptRuntime.safeToString(this));
            }
            return false;
        }

        if (isMapped) {
            // When mapped argument is redefined, if new descriptor is accessor property
            // or data-non-writable property, we have to "unmap" (unlink).
            final PropertyDescriptor desc = toPropertyDescriptor(Global.instance(), propertyDesc);
            if (desc.type() == PropertyDescriptor.ACCESSOR) {
                setDeleted(index, oldValue);
            } else if (desc.has(PropertyDescriptor.WRITABLE) && !desc.isWritable()) {
                // delete and set value from new descriptor if it has one, otherwise use old value
                setDeleted(index, desc.has(PropertyDescriptor.VALUE) ? desc.getValue() : oldValue);
            } else if (desc.has(PropertyDescriptor.VALUE)) {
                setArray(getArray().set(index, desc.getValue(), false));
            }
        }

        return true;
    }

    return super.defineOwnProperty(key, propertyDesc, reject);
}
项目:openjdk-jdk10    文件:Global.java   
/**
 * Create a new ECMAScript AccessorPropertyDescriptor object.
 *
 * @param get getter function of the user accessor property
 * @param set setter function of the user accessor property
 * @param configurable is the property configurable?
 * @param enumerable is the property enumerable?
 * @return newly created AccessorPropertyDescriptor object
 */
public PropertyDescriptor newAccessorDescriptor(final Object get, final Object set, final boolean configurable, final boolean enumerable) {
    final AccessorPropertyDescriptor desc = new AccessorPropertyDescriptor(configurable, enumerable, get == null ? UNDEFINED : get, set == null ? UNDEFINED : set, this);

    if (get == null) {
        desc.delete(PropertyDescriptor.GET, false);
    }

    if (set == null) {
        desc.delete(PropertyDescriptor.SET, false);
    }

    return desc;
}
项目:openjdk-jdk10    文件:DataPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    if (sobj.has(WRITABLE)) {
        this.writable = JSType.toBoolean(sobj.get(WRITABLE));
    } else {
        delete(WRITABLE, false);
    }

    if (sobj.has(VALUE)) {
        this.value = sobj.get(VALUE);
    } else {
        delete(VALUE, false);
    }

    return this;
}
项目:openjdk-jdk10    文件:DataPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor otherDesc) {
    if (! (otherDesc instanceof DataPropertyDescriptor)) {
        return false;
    }

    final DataPropertyDescriptor other = (DataPropertyDescriptor)otherDesc;
    return (!has(CONFIGURABLE) || sameValue(configurable, other.configurable)) &&
           (!has(ENUMERABLE) || sameValue(enumerable, other.enumerable)) &&
           (!has(WRITABLE) || sameValue(writable, other.writable)) &&
           (!has(VALUE) || sameValue(value, other.value));
}
项目:openjdk-jdk10    文件:AccessorPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    if (sobj.has(GET)) {
        final Object getter = sobj.get(GET);
        if (getter == UNDEFINED || getter instanceof ScriptFunction) {
            this.get = getter;
        } else {
            throw typeError("not.a.function", ScriptRuntime.safeToString(getter));
        }
    } else {
        delete(GET, false);
    }

    if (sobj.has(SET)) {
        final Object setter = sobj.get(SET);
        if (setter == UNDEFINED || setter instanceof ScriptFunction) {
            this.set = setter;
        } else {
            throw typeError("not.a.function", ScriptRuntime.safeToString(setter));
        }
    } else {
        delete(SET, false);
    }

    return this;
}
项目:openjdk-jdk10    文件:AccessorPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor otherDesc) {
    if (! (otherDesc instanceof AccessorPropertyDescriptor)) {
        return false;
    }
    final AccessorPropertyDescriptor other = (AccessorPropertyDescriptor)otherDesc;
    return (!has(CONFIGURABLE) || sameValue(configurable, other.configurable)) &&
           (!has(ENUMERABLE) || sameValue(enumerable, other.enumerable)) &&
           (!has(GET) || sameValue(get, other.get)) &&
           (!has(SET) || sameValue(set, other.set));
}
项目:openjdk9    文件:NativeArguments.java   
/**
 * ECMA 15.4.5.1 [[DefineOwnProperty]] ( P, Desc, Throw ) as specialized in
 * ECMA 10.6 for Arguments object.
 */
@Override
public boolean defineOwnProperty(final Object key, final Object propertyDesc, final boolean reject) {
    final int index = ArrayIndex.getArrayIndex(key);
    if (index >= 0) {
        final boolean isMapped = isMapped(index);
        final Object oldValue = isMapped ? getArray().getObject(index) : null;

        if (!super.defineOwnProperty(key, propertyDesc, false)) {
            if (reject) {
                throw typeError("cant.redefine.property",  key.toString(), ScriptRuntime.safeToString(this));
            }
            return false;
        }

        if (isMapped) {
            // When mapped argument is redefined, if new descriptor is accessor property
            // or data-non-writable property, we have to "unmap" (unlink).
            final PropertyDescriptor desc = toPropertyDescriptor(Global.instance(), propertyDesc);
            if (desc.type() == PropertyDescriptor.ACCESSOR) {
                setDeleted(index, oldValue);
            } else if (desc.has(PropertyDescriptor.WRITABLE) && !desc.isWritable()) {
                // delete and set value from new descriptor if it has one, otherwise use old value
                setDeleted(index, desc.has(PropertyDescriptor.VALUE) ? desc.getValue() : oldValue);
            } else if (desc.has(PropertyDescriptor.VALUE)) {
                setArray(getArray().set(index, desc.getValue(), false));
            }
        }

        return true;
    }

    return super.defineOwnProperty(key, propertyDesc, reject);
}
项目:openjdk9    文件:Global.java   
/**
 * Create a new ECMAScript AccessorPropertyDescriptor object.
 *
 * @param get getter function of the user accessor property
 * @param set setter function of the user accessor property
 * @param configurable is the property configurable?
 * @param enumerable is the property enumerable?
 * @return newly created AccessorPropertyDescriptor object
 */
public PropertyDescriptor newAccessorDescriptor(final Object get, final Object set, final boolean configurable, final boolean enumerable) {
    final AccessorPropertyDescriptor desc = new AccessorPropertyDescriptor(configurable, enumerable, get == null ? UNDEFINED : get, set == null ? UNDEFINED : set, this);

    if (get == null) {
        desc.delete(PropertyDescriptor.GET, false);
    }

    if (set == null) {
        desc.delete(PropertyDescriptor.SET, false);
    }

    return desc;
}
项目:openjdk9    文件:DataPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    if (sobj.has(WRITABLE)) {
        this.writable = JSType.toBoolean(sobj.get(WRITABLE));
    } else {
        delete(WRITABLE, false);
    }

    if (sobj.has(VALUE)) {
        this.value = sobj.get(VALUE);
    } else {
        delete(VALUE, false);
    }

    return this;
}
项目:openjdk9    文件:DataPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor otherDesc) {
    if (! (otherDesc instanceof DataPropertyDescriptor)) {
        return false;
    }

    final DataPropertyDescriptor other = (DataPropertyDescriptor)otherDesc;
    return (!has(CONFIGURABLE) || sameValue(configurable, other.configurable)) &&
           (!has(ENUMERABLE) || sameValue(enumerable, other.enumerable)) &&
           (!has(WRITABLE) || sameValue(writable, other.writable)) &&
           (!has(VALUE) || sameValue(value, other.value));
}
项目:openjdk9    文件:AccessorPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    if (sobj.has(GET)) {
        final Object getter = sobj.get(GET);
        if (getter == UNDEFINED || getter instanceof ScriptFunction) {
            this.get = getter;
        } else {
            throw typeError("not.a.function", ScriptRuntime.safeToString(getter));
        }
    } else {
        delete(GET, false);
    }

    if (sobj.has(SET)) {
        final Object setter = sobj.get(SET);
        if (setter == UNDEFINED || setter instanceof ScriptFunction) {
            this.set = setter;
        } else {
            throw typeError("not.a.function", ScriptRuntime.safeToString(setter));
        }
    } else {
        delete(SET, false);
    }

    return this;
}
项目:openjdk9    文件:AccessorPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor otherDesc) {
    if (! (otherDesc instanceof AccessorPropertyDescriptor)) {
        return false;
    }
    final AccessorPropertyDescriptor other = (AccessorPropertyDescriptor)otherDesc;
    return (!has(CONFIGURABLE) || sameValue(configurable, other.configurable)) &&
           (!has(ENUMERABLE) || sameValue(enumerable, other.enumerable)) &&
           (!has(GET) || sameValue(get, other.get)) &&
           (!has(SET) || sameValue(set, other.set));
}
项目:kaziranga    文件:NativeArguments.java   
/**
 * ECMA 15.4.5.1 [[DefineOwnProperty]] ( P, Desc, Throw ) as specialized in
 * ECMA 10.6 for Arguments object.
 */
@Override
public boolean defineOwnProperty(final String key, final Object propertyDesc, final boolean reject) {
    final int index = ArrayIndex.getArrayIndex(key);
    if (index >= 0) {
        final boolean isMapped = isMapped(index);
        final Object oldValue = isMapped ? getArray().getObject(index) : null;

        if (!super.defineOwnProperty(key, propertyDesc, false)) {
            if (reject) {
                throw typeError("cant.redefine.property",  key, ScriptRuntime.safeToString(this));
            }
            return false;
        }

        if (isMapped) {
            // When mapped argument is redefined, if new descriptor is accessor property
            // or data-non-writable property, we have to "unmap" (unlink).
            final PropertyDescriptor desc = toPropertyDescriptor(Global.instance(), propertyDesc);
            if (desc.type() == PropertyDescriptor.ACCESSOR) {
                setDeleted(index, oldValue);
            } else if (desc.has(PropertyDescriptor.WRITABLE) && !desc.isWritable()) {
                // delete and set value from new descriptor if it has one, otherwise use old value
                setDeleted(index, desc.has(PropertyDescriptor.VALUE) ? desc.getValue() : oldValue);
            } else if (desc.has(PropertyDescriptor.VALUE)) {
                setArray(getArray().set(index, desc.getValue(), false));
            }
        }

        return true;
    }

    return super.defineOwnProperty(key, propertyDesc, reject);
}
项目:kaziranga    文件:Global.java   
/**
 * Create a new ECMAScript AccessorPropertyDescriptor object.
 *
 * @param get getter function of the user accessor property
 * @param set setter function of the user accessor property
 * @param configurable is the property configurable?
 * @param enumerable is the property enumerable?
 * @return newly created AccessorPropertyDescriptor object
 */
public PropertyDescriptor newAccessorDescriptor(final Object get, final Object set, final boolean configurable, final boolean enumerable) {
    final AccessorPropertyDescriptor desc = new AccessorPropertyDescriptor(configurable, enumerable, get == null ? UNDEFINED : get, set == null ? UNDEFINED : set, this);

    if (get == null) {
        desc.delete(PropertyDescriptor.GET, false);
    }

    if (set == null) {
        desc.delete(PropertyDescriptor.SET, false);
    }

    return desc;
}
项目:kaziranga    文件:DataPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    if (sobj.has(WRITABLE)) {
        this.writable = JSType.toBoolean(sobj.get(WRITABLE));
    } else {
        delete(WRITABLE, false);
    }

    if (sobj.has(VALUE)) {
        this.value = sobj.get(VALUE);
    } else {
        delete(VALUE, false);
    }

    return this;
}
项目:kaziranga    文件:DataPropertyDescriptor.java   
@Override
public boolean hasAndEquals(final PropertyDescriptor otherDesc) {
    if (! (otherDesc instanceof DataPropertyDescriptor)) {
        return false;
    }

    final DataPropertyDescriptor other = (DataPropertyDescriptor)otherDesc;
    return (!has(CONFIGURABLE) || sameValue(configurable, other.configurable)) &&
           (!has(ENUMERABLE) || sameValue(enumerable, other.enumerable)) &&
           (!has(WRITABLE) || sameValue(writable, other.writable)) &&
           (!has(VALUE) || sameValue(value, other.value));
}
项目:kaziranga    文件:AccessorPropertyDescriptor.java   
@Override
public PropertyDescriptor fillFrom(final ScriptObject sobj) {
    if (sobj.has(CONFIGURABLE)) {
        this.configurable = JSType.toBoolean(sobj.get(CONFIGURABLE));
    } else {
        delete(CONFIGURABLE, false);
    }

    if (sobj.has(ENUMERABLE)) {
        this.enumerable = JSType.toBoolean(sobj.get(ENUMERABLE));
    } else {
        delete(ENUMERABLE, false);
    }

    if (sobj.has(GET)) {
        final Object getter = sobj.get(GET);
        if (getter == UNDEFINED || getter instanceof ScriptFunction) {
            this.get = getter;
        } else {
            throw typeError("not.a.function", ScriptRuntime.safeToString(getter));
        }
    } else {
        delete(GET, false);
    }

    if (sobj.has(SET)) {
        final Object setter = sobj.get(SET);
        if (setter == UNDEFINED || setter instanceof ScriptFunction) {
            this.set = setter;
        } else {
            throw typeError("not.a.function", ScriptRuntime.safeToString(setter));
        }
    } else {
        delete(SET, false);
    }

    return this;
}