| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef RUNTIME_LIB_INVOCATION_MIRROR_H_ | 5 #ifndef RUNTIME_LIB_INVOCATION_MIRROR_H_ | 
| 6 #define RUNTIME_LIB_INVOCATION_MIRROR_H_ | 6 #define RUNTIME_LIB_INVOCATION_MIRROR_H_ | 
| 7 | 7 | 
| 8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" | 
| 9 | 9 | 
| 10 namespace dart { | 10 namespace dart { | 
| 11 | 11 | 
| 12 class InvocationMirror : public AllStatic { | 12 class InvocationMirror : public AllStatic { | 
| 13  public: | 13  public: | 
| 14   // These enum correspond to the constants in invocation_mirror_patch.dart. | 14   // These enum correspond to the constants in invocation_mirror_patch.dart. | 
| 15   // It is used to communicate the reason for statically thrown | 15   // It is used to communicate the reason for statically thrown | 
| 16   // NoSuchMethodErrors by the compiler. | 16   // NoSuchMethodErrors by the compiler. | 
| 17   enum Type { | 17   enum Type { | 
| 18     // Constants describing the invocation type. | 18     // Constants describing the invocation type. | 
| 19     // kField cannot be generated by regular invocation mirrors. | 19     // kField cannot be generated by regular invocation mirrors. | 
| 20     kMethod = 0, | 20     kMethod = 0, | 
| 21     kGetter = 1, | 21     kGetter = 1, | 
| 22     kSetter = 2, | 22     kSetter = 2, | 
| 23     kField  = 3, | 23     kField = 3, | 
| 24     kLocalVar = 4, | 24     kLocalVar = 4, | 
| 25     kTypeShift = 0, | 25     kTypeShift = 0, | 
| 26     kTypeBits = 3, | 26     kTypeBits = 3, | 
| 27     kTypeMask = (1 << kTypeBits) - 1 | 27     kTypeMask = (1 << kTypeBits) - 1 | 
| 28   }; | 28   }; | 
| 29 | 29 | 
| 30   enum Call { | 30   enum Call { | 
| 31     // These values, except kDynamic and kSuper, are only used when throwing | 31     // These values, except kDynamic and kSuper, are only used when throwing | 
| 32     // NoSuchMethodError for compile-time resolution failures. | 32     // NoSuchMethodError for compile-time resolution failures. | 
| 33     kDynamic = 0, | 33     kDynamic = 0, | 
| 34     kSuper = 1, | 34     kSuper = 1, | 
| 35     kStatic  = 2, | 35     kStatic = 2, | 
| 36     kConstructor = 3, | 36     kConstructor = 3, | 
| 37     kTopLevel = 4, | 37     kTopLevel = 4, | 
| 38     kCallShift = kTypeBits, | 38     kCallShift = kTypeBits, | 
| 39     kCallBits = 3, | 39     kCallBits = 3, | 
| 40     kCallMask = (1 << kCallBits) - 1 | 40     kCallMask = (1 << kCallBits) - 1 | 
| 41   }; | 41   }; | 
| 42 | 42 | 
| 43   static int EncodeType(Call call, Type type) { | 43   static int EncodeType(Call call, Type type) { | 
| 44     return (call << kCallShift) | type; | 44     return (call << kCallShift) | type; | 
| 45   } | 45   } | 
| 46 }; | 46 }; | 
| 47 | 47 | 
| 48 }  // namespace dart | 48 }  // namespace dart | 
| 49 | 49 | 
| 50 #endif  // RUNTIME_LIB_INVOCATION_MIRROR_H_ | 50 #endif  // RUNTIME_LIB_INVOCATION_MIRROR_H_ | 
| OLD | NEW | 
|---|