changeset 21052:de8880bbf2e1

Truffle: simplify getProperty; minor cleanup
author Andreas Woess <andreas.woess@oracle.com>
date Mon, 20 Apr 2015 14:22:01 +0200
parents 50fe6a0c6f1d
children 3006db547d5f
files graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Property.java graal/com.oracle.truffle.object/src/com/oracle/truffle/object/PropertyImpl.java graal/com.oracle.truffle.object/src/com/oracle/truffle/object/PropertyMap.java graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java
diffstat 4 files changed, 7 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Property.java	Mon Apr 20 11:02:30 2015 -0700
+++ b/graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Property.java	Mon Apr 20 14:22:01 2015 +0200
@@ -25,10 +25,8 @@
 package com.oracle.truffle.api.object;
 
 /**
- * Property objects represent the mapping between low-level stores and high-level data. The simplest
- * Property could be nothing more than a map of one index to one property's value, but abstracting
- * the interface allows for getter/setter methods, type-checked properties, and other such
- * specialized and language-specific behavior. ECMAScript[8.6.1]
+ * Property objects represent the mapping between property identifiers (keys) and storage locations.
+ * Optionally, properties may have metadata attached to them.
  */
 public abstract class Property {
     protected Property() {
--- a/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/PropertyImpl.java	Mon Apr 20 11:02:30 2015 -0700
+++ b/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/PropertyImpl.java	Mon Apr 20 14:22:01 2015 +0200
@@ -28,10 +28,8 @@
 import com.oracle.truffle.object.Locations.*;
 
 /**
- * Property objects represent the mapping between low-level stores and high-level data. The simplest
- * Property could be nothing more than a map of one index to one property's value, but abstracting
- * the interface allows for getter/setter methods, type-checked properties, and other such
- * specialized and language-specific behavior. ECMAScript[8.6.1]
+ * Property objects represent the mapping between property identifiers (keys) and storage locations.
+ * Optionally, properties may have metadata attached to them.
  */
 public class PropertyImpl extends Property {
     private final Object key;
--- a/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/PropertyMap.java	Mon Apr 20 11:02:30 2015 -0700
+++ b/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/PropertyMap.java	Mon Apr 20 14:22:01 2015 +0200
@@ -296,7 +296,7 @@
     }
 
     public PropertyMap removeCopy(Property value) {
-        LinkedList<Property> shelve = new LinkedList<>();
+        Deque<Property> shelve = new ArrayDeque<>();
         PropertyMap current = this;
         while (!current.isEmpty()) {
             if (current.getLastProperty().equals(value)) {
@@ -314,7 +314,7 @@
     }
 
     public PropertyMap replaceCopy(Property oldValue, Property newValue) {
-        LinkedList<Property> shelve = new LinkedList<>();
+        Deque<Property> shelve = new ArrayDeque<>();
         PropertyMap current = this;
         while (!current.isEmpty()) {
             if (current.getLastProperty().equals(oldValue)) {
--- a/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java	Mon Apr 20 11:02:30 2015 -0700
+++ b/graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java	Mon Apr 20 14:22:01 2015 +0200
@@ -276,14 +276,7 @@
     @Override
     @TruffleBoundary
     public Property getProperty(Object key) {
-        PropertyMap current = this.propertyMap;
-        while (current.getLastProperty() != null) {
-            if (current.getLastProperty().getKey().equals(key)) {
-                return current.getLastProperty();
-            }
-            current = current.getParentMap();
-        }
-        return null;
+        return propertyMap.get(key);
     }
 
     protected final void addDirectTransition(Transition transition, ShapeImpl next) {