< prev index next >
src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/ObjectCreator.java
Print this page
*** 27,36 ****
--- 27,37 ----
import static jdk.nashorn.internal.codegen.CompilerConstants.SCOPE;
import java.util.List;
import jdk.nashorn.internal.codegen.types.Type;
+ import jdk.nashorn.internal.runtime.JSType;
import jdk.nashorn.internal.runtime.PropertyMap;
import jdk.nashorn.internal.runtime.ScriptObject;
/**
* Base class for object creation code generation.
*** 154,170 ****
*/
protected abstract void loadValue(T value, Type type);
MethodEmitter loadTuple(final MethodEmitter method, final MapTuple<T> tuple, final boolean pack) {
loadValue(tuple.value, tuple.type);
! if (pack && codegen.useDualFields() && tuple.isPrimitive()) {
! method.pack();
! } else {
method.convert(Type.OBJECT);
}
return method;
}
! MethodEmitter loadTuple(final MethodEmitter method, final MapTuple<T> tuple) {
! return loadTuple(method, tuple, true);
}
}
--- 155,171 ----
*/
protected abstract void loadValue(T value, Type type);
MethodEmitter loadTuple(final MethodEmitter method, final MapTuple<T> tuple, final boolean pack) {
loadValue(tuple.value, tuple.type);
! if (!codegen.useDualFields() || !tuple.isPrimitive()) {
method.convert(Type.OBJECT);
+ } else if (pack) {
+ method.pack();
}
return method;
}
! MethodEmitter loadIndex(final MethodEmitter method, final long index) {
! return JSType.isRepresentableAsInt(index) ? method.load((int) index) : method.load((double) index);
}
}
< prev index next >