84 */
85 public static final int IS_NASGEN_PRIMITIVE = 1 << 6;
86
87 /** Is this property bound to a receiver? This means get/set operations will be delegated to
88 * a statically defined object instead of the object passed as callsite parameter. */
89 public static final int IS_BOUND = 1 << 7;
90
91 /** Is this a lexically scoped LET or CONST variable that is dead until it is declared. */
92 public static final int NEEDS_DECLARATION = 1 << 8;
93
94 /** Property key. */
95 private final String key;
96
97 /** Property flags. */
98 private int flags;
99
100 /** Property field number or spill slot. */
101 private final int slot;
102
103 /** SwitchPoint that is invalidated when property is changed, optional */
104 protected SwitchPoint changeCallback;
105
106 private static final long serialVersionUID = 2099814273074501176L;
107
108 /**
109 * Constructor
110 *
111 * @param key property key
112 * @param flags property flags
113 * @param slot property field number or spill slot
114 */
115 Property(final String key, final int flags, final int slot) {
116 assert key != null;
117 this.key = key;
118 this.flags = flags;
119 this.slot = slot;
120 }
121
122 /**
123 * Copy constructor
124 *
|
84 */
85 public static final int IS_NASGEN_PRIMITIVE = 1 << 6;
86
87 /** Is this property bound to a receiver? This means get/set operations will be delegated to
88 * a statically defined object instead of the object passed as callsite parameter. */
89 public static final int IS_BOUND = 1 << 7;
90
91 /** Is this a lexically scoped LET or CONST variable that is dead until it is declared. */
92 public static final int NEEDS_DECLARATION = 1 << 8;
93
94 /** Property key. */
95 private final String key;
96
97 /** Property flags. */
98 private int flags;
99
100 /** Property field number or spill slot. */
101 private final int slot;
102
103 /** SwitchPoint that is invalidated when property is changed, optional */
104 protected transient SwitchPoint changeCallback;
105
106 private static final long serialVersionUID = 2099814273074501176L;
107
108 /**
109 * Constructor
110 *
111 * @param key property key
112 * @param flags property flags
113 * @param slot property field number or spill slot
114 */
115 Property(final String key, final int flags, final int slot) {
116 assert key != null;
117 this.key = key;
118 this.flags = flags;
119 this.slot = slot;
120 }
121
122 /**
123 * Copy constructor
124 *
|