本文整理汇总了Java中jdk.nashorn.internal.runtime.PropertyDescriptor.setWritable方法的典型用法代码示例。如果您正苦于以下问题:Java PropertyDescriptor.setWritable方法的具体用法?Java PropertyDescriptor.setWritable怎么用?Java PropertyDescriptor.setWritable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类jdk.nashorn.internal.runtime.PropertyDescriptor
的用法示例。
在下文中一共展示了PropertyDescriptor.setWritable方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: defineLength
import jdk.nashorn.internal.runtime.PropertyDescriptor; //导入方法依赖的package包/类
private boolean defineLength(final long oldLen, final PropertyDescriptor oldLenDesc, final PropertyDescriptor desc, final boolean reject) {
// Step 3a
if (!desc.has(VALUE)) {
return super.defineOwnProperty("length", desc, reject);
}
// Step 3b
final PropertyDescriptor newLenDesc = desc;
// Step 3c and 3d - get new length and convert to long
final long newLen = NativeArray.validLength(newLenDesc.getValue(), true);
// Step 3e
newLenDesc.setValue(newLen);
// Step 3f
// increasing array length - just need to set new length value (and attributes if any) and return
if (newLen >= oldLen) {
return super.defineOwnProperty("length", newLenDesc, reject);
}
// Step 3g
if (!oldLenDesc.isWritable()) {
if (reject) {
throw typeError("property.not.writable", "length", ScriptRuntime.safeToString(this));
}
return false;
}
// Step 3h and 3i
final boolean newWritable = !newLenDesc.has(WRITABLE) || newLenDesc.isWritable();
if (!newWritable) {
newLenDesc.setWritable(true);
}
// Step 3j and 3k
final boolean succeeded = super.defineOwnProperty("length", newLenDesc, reject);
if (!succeeded) {
return false;
}
// Step 3l
// make sure that length is set till the point we can delete the old elements
long o = oldLen;
while (newLen < o) {
o--;
final boolean deleteSucceeded = delete(o, false);
if (!deleteSucceeded) {
newLenDesc.setValue(o + 1);
if (!newWritable) {
newLenDesc.setWritable(false);
}
super.defineOwnProperty("length", newLenDesc, false);
if (reject) {
throw typeError("property.not.writable", "length", ScriptRuntime.safeToString(this));
}
return false;
}
}
// Step 3m
if (!newWritable) {
// make 'length' property not writable
final ScriptObject newDesc = Global.newEmptyInstance();
newDesc.set(WRITABLE, false, 0);
return super.defineOwnProperty("length", newDesc, false);
}
return true;
}
示例2: defineLength
import jdk.nashorn.internal.runtime.PropertyDescriptor; //导入方法依赖的package包/类
private boolean defineLength(final long oldLen, final PropertyDescriptor oldLenDesc, final PropertyDescriptor desc, final boolean reject) {
// Step 3a
if (!desc.has(VALUE)) {
return super.defineOwnProperty("length", desc, reject);
}
// Step 3b
final PropertyDescriptor newLenDesc = desc;
// Step 3c and 3d - get new length and convert to long
final long newLen = NativeArray.validLength(newLenDesc.getValue());
// Step 3e - note that we need to convert to int or double as long is not considered a JS number type anymore
newLenDesc.setValue(JSType.toNarrowestNumber(newLen));
// Step 3f
// increasing array length - just need to set new length value (and attributes if any) and return
if (newLen >= oldLen) {
return super.defineOwnProperty("length", newLenDesc, reject);
}
// Step 3g
if (!oldLenDesc.isWritable()) {
if (reject) {
throw typeError("property.not.writable", "length", ScriptRuntime.safeToString(this));
}
return false;
}
// Step 3h and 3i
final boolean newWritable = !newLenDesc.has(WRITABLE) || newLenDesc.isWritable();
if (!newWritable) {
newLenDesc.setWritable(true);
}
// Step 3j and 3k
final boolean succeeded = super.defineOwnProperty("length", newLenDesc, reject);
if (!succeeded) {
return false;
}
// Step 3l
// make sure that length is set till the point we can delete the old elements
long o = oldLen;
while (newLen < o) {
o--;
final boolean deleteSucceeded = delete(o, false);
if (!deleteSucceeded) {
newLenDesc.setValue(o + 1);
if (!newWritable) {
newLenDesc.setWritable(false);
}
super.defineOwnProperty("length", newLenDesc, false);
if (reject) {
throw typeError("property.not.writable", "length", ScriptRuntime.safeToString(this));
}
return false;
}
}
// Step 3m
if (!newWritable) {
// make 'length' property not writable
final ScriptObject newDesc = Global.newEmptyInstance();
newDesc.set(WRITABLE, false, 0);
return super.defineOwnProperty("length", newDesc, false);
}
return true;
}
示例3: defineLength
import jdk.nashorn.internal.runtime.PropertyDescriptor; //导入方法依赖的package包/类
private boolean defineLength(final long oldLen, final PropertyDescriptor oldLenDesc, final PropertyDescriptor desc, final boolean reject) {
// Step 3a
if (!desc.has(VALUE)) {
return super.defineOwnProperty("length", desc, reject);
}
// Step 3b
final PropertyDescriptor newLenDesc = desc;
// Step 3c and 3d - get new length and convert to long
final long newLen = NativeArray.validLength(newLenDesc.getValue());
// Step 3e
newLenDesc.setValue(newLen);
// Step 3f
// increasing array length - just need to set new length value (and attributes if any) and return
if (newLen >= oldLen) {
return super.defineOwnProperty("length", newLenDesc, reject);
}
// Step 3g
if (!oldLenDesc.isWritable()) {
if (reject) {
throw typeError("property.not.writable", "length", ScriptRuntime.safeToString(this));
}
return false;
}
// Step 3h and 3i
final boolean newWritable = !newLenDesc.has(WRITABLE) || newLenDesc.isWritable();
if (!newWritable) {
newLenDesc.setWritable(true);
}
// Step 3j and 3k
final boolean succeeded = super.defineOwnProperty("length", newLenDesc, reject);
if (!succeeded) {
return false;
}
// Step 3l
// make sure that length is set till the point we can delete the old elements
long o = oldLen;
while (newLen < o) {
o--;
final boolean deleteSucceeded = delete(o, false);
if (!deleteSucceeded) {
newLenDesc.setValue(o + 1);
if (!newWritable) {
newLenDesc.setWritable(false);
}
super.defineOwnProperty("length", newLenDesc, false);
if (reject) {
throw typeError("property.not.writable", "length", ScriptRuntime.safeToString(this));
}
return false;
}
}
// Step 3m
if (!newWritable) {
// make 'length' property not writable
final ScriptObject newDesc = Global.newEmptyInstance();
newDesc.set(WRITABLE, false, 0);
return super.defineOwnProperty("length", newDesc, false);
}
return true;
}