< 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 >