Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 7054)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 7055)
@@ -232,4 +232,6 @@
                 final Tag tag = c instanceof Condition.KeyCondition
                         ? ((Condition.KeyCondition) c).asTag()
+                        : c instanceof Condition.SimpleKeyValueCondition
+                        ? ((Condition.SimpleKeyValueCondition) c).asTag()
                         : c instanceof Condition.KeyValueCondition
                         ? ((Condition.KeyValueCondition) c).asTag()
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 7054)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 7055)
@@ -29,7 +29,9 @@
         switch (context) {
         case PRIMITIVE:
-            return KeyValueRegexpCondition.SUPPORTED_OPS.contains(op) && !considerValAsKey
-                    ? new KeyValueRegexpCondition(k, v, op, false)
-                    : new KeyValueCondition(k, v, op, considerValAsKey);
+            if (KeyValueRegexpCondition.SUPPORTED_OPS.contains(op) && !considerValAsKey)
+                return new KeyValueRegexpCondition(k, v, op, false);
+            if (!considerValAsKey && op.equals(Op.EQ))
+                return new SimpleKeyValueCondition(k, v);
+            return new KeyValueCondition(k, v, op, considerValAsKey);
         case LINK:
             if (considerValAsKey)
@@ -150,4 +152,28 @@
 
     /**
+     * Most common case of a KeyValueCondition.
+     * 
+     * Extra class for performance reasons.
+     */
+    public static class SimpleKeyValueCondition extends Condition {
+        public final String k;
+        public final String v;
+
+        public SimpleKeyValueCondition(String k, String v) {
+            this.k = k;
+            this.v = v;
+        }
+
+        @Override
+        public boolean applies(Environment e) {
+            return v.equals(e.osm.get(k));
+        }
+        
+        public Tag asTag() {
+            return new Tag(k, v);
+        }
+    }
+
+    /**
      * <p>Represents a key/value condition which is either applied to a primitive.</p>
      *
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 7054)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java	(revision 7055)
@@ -525,4 +525,5 @@
             return subpart;
         }
+
         @Override
         public Range getRange() {
