Skip to content

Commit 6cb9edc

Browse files
committed
refactoring
1 parent c2dd9c4 commit 6cb9edc

File tree

4 files changed

+67
-38
lines changed

4 files changed

+67
-38
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
3+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
*
5+
* The Universal Permissive License (UPL), Version 1.0
6+
*
7+
* Subject to the condition set forth below, permission is hereby granted to any
8+
* person obtaining a copy of this software, associated documentation and/or
9+
* data (collectively the "Software"), free of charge and under any and all
10+
* copyright rights in the Software, and any and all patent rights owned or
11+
* freely licensable by each licensor hereunder covering either (i) the
12+
* unmodified Software as contributed to or provided by such licensor, or (ii)
13+
* the Larger Works (as defined below), to deal in both
14+
*
15+
* (a) the Software, and
16+
*
17+
* (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
18+
* one is included with the Software each a "Larger Work" to which the Software
19+
* is contributed by such licensors),
20+
*
21+
* without restriction, including without limitation the rights to copy, create
22+
* derivative works of, display, perform, and distribute the Software and make,
23+
* use, sell, offer for sale, import, export, have made, and have sold the
24+
* Software and the Larger Work(s), and to sublicense the foregoing rights on
25+
* either these or other terms.
26+
*
27+
* This license is subject to the following condition:
28+
*
29+
* The above copyright notice and either this complete permission notice or at a
30+
* minimum a reference to the UPL must be included in all copies or substantial
31+
* portions of the Software.
32+
*
33+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
35+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
37+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
39+
* SOFTWARE.
40+
*/
41+
package com.oracle.graal.python.nodes.frame;
42+
43+
import com.oracle.graal.python.builtins.objects.dict.PDict;
44+
import com.oracle.graal.python.builtins.objects.function.PArguments;
45+
import com.oracle.truffle.api.frame.VirtualFrame;
46+
47+
public interface AccessNameNode {
48+
default boolean hasLocals(VirtualFrame frame) {
49+
// (tfel): These nodes will only ever be generated in a module scope where
50+
// neither generator special args nor a ClassBodyRootNode can occur
51+
return PArguments.getSpecialArgument(frame) != null;
52+
}
53+
54+
default boolean hasLocalsDict(VirtualFrame frame) {
55+
return PArguments.getSpecialArgument(frame) instanceof PDict;
56+
}
57+
58+
public abstract String getAttributeId();
59+
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/frame/DeleteNameNode.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
import com.oracle.truffle.api.dsl.Specialization;
5454
import com.oracle.truffle.api.frame.VirtualFrame;
5555

56-
public abstract class DeleteNameNode extends StatementNode {
56+
public abstract class DeleteNameNode extends StatementNode implements AccessNameNode {
5757
@Child private DeleteGlobalNode deleteGlobalNode;
5858
protected final IsBuiltinClassProfile keyError = IsBuiltinClassProfile.create();
5959
protected final String attributeId;
@@ -66,17 +66,6 @@ public static DeleteNameNode create(String attributeId) {
6666
return DeleteNameNodeGen.create(attributeId);
6767
}
6868

69-
protected boolean hasLocals(VirtualFrame frame) {
70-
// (tfel): This node will only ever be generated in a module scope
71-
// where neither generator special args nor a ClassBodyRootNode can
72-
// occur
73-
return PArguments.getSpecialArgument(frame) != null;
74-
}
75-
76-
protected boolean hasLocalsDict(VirtualFrame frame) {
77-
return PArguments.getSpecialArgument(frame) instanceof PDict;
78-
}
79-
8069
private DeleteGlobalNode getDeleteGlobalNode() {
8170
if (deleteGlobalNode == null) {
8271
CompilerDirectives.transferToInterpreterAndInvalidate();
@@ -114,4 +103,8 @@ protected void readFromLocals(VirtualFrame frame,
114103
protected void readFromLocals(VirtualFrame frame) {
115104
getDeleteGlobalNode().executeVoid(frame);
116105
}
106+
107+
public String getAttributeId() {
108+
return attributeId;
109+
}
117110
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/frame/ReadNameNode.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
import com.oracle.truffle.api.dsl.Specialization;
5555
import com.oracle.truffle.api.frame.VirtualFrame;
5656

57-
public abstract class ReadNameNode extends ExpressionNode implements ReadNode {
57+
public abstract class ReadNameNode extends ExpressionNode implements ReadNode, AccessNameNode {
5858
@Child private ReadGlobalOrBuiltinNode readGlobalNode;
5959
protected final IsBuiltinClassProfile keyError = IsBuiltinClassProfile.create();
6060
protected final String attributeId;
@@ -67,17 +67,6 @@ public static ReadNameNode create(String attributeId) {
6767
return ReadNameNodeGen.create(attributeId);
6868
}
6969

70-
protected boolean hasLocals(VirtualFrame frame) {
71-
// (tfel): This node will only ever be generated in a module scope
72-
// where neither generator special args nor a ClassBodyRootNode can
73-
// occur
74-
return PArguments.getSpecialArgument(frame) != null;
75-
}
76-
77-
protected boolean hasLocalsDict(VirtualFrame frame) {
78-
return PArguments.getSpecialArgument(frame) instanceof PDict;
79-
}
80-
8170
private ReadGlobalOrBuiltinNode getReadGlobalNode() {
8271
if (readGlobalNode == null) {
8372
CompilerDirectives.transferToInterpreterAndInvalidate();

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/frame/WriteNameNode.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
import com.oracle.truffle.api.frame.VirtualFrame;
5353

5454
@NodeChild(value = "rhs", type = ExpressionNode.class)
55-
public abstract class WriteNameNode extends StatementNode implements WriteNode {
55+
public abstract class WriteNameNode extends StatementNode implements WriteNode, AccessNameNode {
5656
protected final String attributeId;
5757

5858
protected WriteNameNode(String attributeId) {
@@ -63,17 +63,6 @@ public static WriteNameNode create(String attributeId, ExpressionNode rhs) {
6363
return WriteNameNodeGen.create(attributeId, rhs);
6464
}
6565

66-
protected boolean hasLocals(VirtualFrame frame) {
67-
// (tfel): This node will only ever be generated in a module scope
68-
// where neither generator special args nor a ClassBodyRootNode can
69-
// occur
70-
return PArguments.getSpecialArgument(frame) != null;
71-
}
72-
73-
protected boolean hasLocalsDict(VirtualFrame frame) {
74-
return PArguments.getSpecialArgument(frame) instanceof PDict;
75-
}
76-
7766
@Specialization(guards = "hasLocalsDict(frame)")
7867
protected void writeLocalsDict(VirtualFrame frame, Object value,
7968
@Cached("create()") HashingCollectionNodes.SetItemNode setItem) {
@@ -124,8 +113,7 @@ public void doWrite(VirtualFrame frame, Object value) {
124113

125114
public abstract void executeWithValue(VirtualFrame frame, Object value);
126115

127-
public Object getAttributeId() {
116+
public String getAttributeId() {
128117
return attributeId;
129118
}
130-
131119
}

0 commit comments

Comments
 (0)