equal
deleted
inserted
replaced
43 class DoubleConstant; |
43 class DoubleConstant; |
44 class ObjectType; |
44 class ObjectType; |
45 class ObjectConstant; |
45 class ObjectConstant; |
46 class ArrayType; |
46 class ArrayType; |
47 class ArrayConstant; |
47 class ArrayConstant; |
|
48 class StableArrayConstant; |
48 class InstanceType; |
49 class InstanceType; |
49 class InstanceConstant; |
50 class InstanceConstant; |
50 class MetadataType; |
51 class MetadataType; |
51 class ClassType; |
52 class ClassType; |
52 class ClassConstant; |
53 class ClassConstant; |
166 virtual InstanceConstant* as_InstanceConstant(){ return NULL; } |
167 virtual InstanceConstant* as_InstanceConstant(){ return NULL; } |
167 virtual ClassConstant* as_ClassConstant() { return NULL; } |
168 virtual ClassConstant* as_ClassConstant() { return NULL; } |
168 virtual MethodConstant* as_MethodConstant() { return NULL; } |
169 virtual MethodConstant* as_MethodConstant() { return NULL; } |
169 virtual MethodDataConstant* as_MethodDataConstant() { return NULL; } |
170 virtual MethodDataConstant* as_MethodDataConstant() { return NULL; } |
170 virtual ArrayConstant* as_ArrayConstant() { return NULL; } |
171 virtual ArrayConstant* as_ArrayConstant() { return NULL; } |
|
172 virtual StableArrayConstant* as_StableArrayConstant() { return NULL; } |
171 virtual AddressConstant* as_AddressConstant() { return NULL; } |
173 virtual AddressConstant* as_AddressConstant() { return NULL; } |
172 |
174 |
173 // type operations |
175 // type operations |
174 ValueType* meet(ValueType* y) const; |
176 ValueType* meet(ValueType* y) const; |
175 ValueType* join(ValueType* y) const; |
177 ValueType* join(ValueType* y) const; |
353 virtual ArrayConstant* as_ArrayConstant() { return this; } |
355 virtual ArrayConstant* as_ArrayConstant() { return this; } |
354 virtual ciObject* constant_value() const; |
356 virtual ciObject* constant_value() const; |
355 virtual ciType* exact_type() const; |
357 virtual ciType* exact_type() const; |
356 }; |
358 }; |
357 |
359 |
|
360 class StableArrayConstant: public ArrayConstant { |
|
361 private: |
|
362 jint _dimension; |
|
363 |
|
364 public: |
|
365 StableArrayConstant(ciArray* value, jint dimension) : ArrayConstant(value) { |
|
366 assert(dimension > 0, "not a stable array"); |
|
367 _dimension = dimension; |
|
368 } |
|
369 |
|
370 jint dimension() const { return _dimension; } |
|
371 |
|
372 virtual StableArrayConstant* as_StableArrayConstant() { return this; } |
|
373 }; |
358 |
374 |
359 class InstanceType: public ObjectType { |
375 class InstanceType: public ObjectType { |
360 public: |
376 public: |
361 virtual InstanceType* as_InstanceType() { return this; } |
377 virtual InstanceType* as_InstanceType() { return this; } |
362 }; |
378 }; |