src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptFunction.java

Print this page

        

*** 141,151 **** constructorCount++; } this.data = data; this.scope = scope; - this.allocatorMap = data.getAllocatorMap(); } @Override public String getClassName() { return "Function"; --- 141,150 ----
*** 251,261 **** allocations++; } assert !isBoundFunction(); // allocate never invoked on bound functions ! final ScriptObject object = data.allocate(allocatorMap); if (object != null) { final Object prototype = getPrototype(); if (prototype instanceof ScriptObject) { object.setInitialProto((ScriptObject)prototype); --- 250,260 ---- allocations++; } assert !isBoundFunction(); // allocate never invoked on bound functions ! final ScriptObject object = data.allocate(getAllocatorMap()); if (object != null) { final Object prototype = getPrototype(); if (prototype instanceof ScriptObject) { object.setInitialProto((ScriptObject)prototype);
*** 267,276 **** --- 266,283 ---- } return object; } + private PropertyMap getAllocatorMap() { + PropertyMap map = allocatorMap; + if (map == null) { + map = allocatorMap = data.getAllocatorMap(); + } + return map; + } + /** * Return Object.prototype - used by "allocate" * @return Object.prototype */ protected abstract ScriptObject getObjectPrototype();