aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java
diff options
context:
space:
mode:
authorsundar <none@none>2013-10-10 21:43:35 +0200
committersundar <none@none>2013-10-10 21:43:35 +0200
commit383bc3aab9e7dd5cc57242c5f594d2e155f24bab (patch)
tree51a61d2e00e68855f578d66e71e8cfbea7c4fcd1 /src/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java
parent12924053eda948499618a71fd30db10186c3ce7a (diff)
downloadjdk8u_nashorn-383bc3aab9e7dd5cc57242c5f594d2e155f24bab.tar.gz
8026264: Getter, setter function name mangling issues
Reviewed-by: lagergren, jlaskey
Diffstat (limited to 'src/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java')
-rw-r--r--src/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java b/src/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java
index fee04970..ef9324d9 100644
--- a/src/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java
+++ b/src/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java
@@ -33,6 +33,7 @@ import java.lang.invoke.MethodType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
+import jdk.internal.dynalink.support.NameCodec;
import jdk.nashorn.internal.codegen.Compiler;
import jdk.nashorn.internal.codegen.CompilerConstants;
@@ -100,9 +101,7 @@ public final class RecompilableScriptFunctionData extends ScriptFunctionData {
* @param allocatorMap allocator map to seed instances with, when constructing
*/
public RecompilableScriptFunctionData(final FunctionNode functionNode, final CodeInstaller<ScriptEnvironment> installer, final String allocatorClassName, final PropertyMap allocatorMap) {
- super(functionNode.isAnonymous() ?
- "" :
- functionNode.getIdent().getName(),
+ super(functionName(functionNode),
functionNode.getParameters().size(),
functionNode.isStrict(),
false,
@@ -139,6 +138,20 @@ public final class RecompilableScriptFunctionData extends ScriptFunctionData {
return sb.toString() + super.toString();
}
+ private static String functionName(final FunctionNode fn) {
+ if (fn.isAnonymous()) {
+ return "";
+ } else {
+ final FunctionNode.Kind kind = fn.getKind();
+ if (kind == FunctionNode.Kind.GETTER || kind == FunctionNode.Kind.SETTER) {
+ final String name = NameCodec.decode(fn.getIdent().getName());
+ return name.substring(4); // 4 is "get " or "set "
+ } else {
+ return fn.getIdent().getName();
+ }
+ }
+ }
+
private static long tokenFor(final FunctionNode fn) {
final int position = Token.descPosition(fn.getFirstToken());
final int length = Token.descPosition(fn.getLastToken()) - position + Token.descLength(fn.getLastToken());