1066 |
1066 |
1067 class java_dyn_CallSite: AllStatic { |
1067 class java_dyn_CallSite: AllStatic { |
1068 friend class JavaClasses; |
1068 friend class JavaClasses; |
1069 |
1069 |
1070 private: |
1070 private: |
1071 static int _type_offset; |
|
1072 static int _target_offset; |
1071 static int _target_offset; |
1073 static int _vmmethod_offset; |
1072 static int _caller_method_offset; |
|
1073 static int _caller_bci_offset; |
1074 |
1074 |
1075 static void compute_offsets(); |
1075 static void compute_offsets(); |
1076 |
1076 |
1077 public: |
1077 public: |
1078 // Accessors |
1078 // Accessors |
1079 static oop type(oop site); |
|
1080 |
|
1081 static oop target(oop site); |
1079 static oop target(oop site); |
1082 static void set_target(oop site, oop target); |
1080 static void set_target(oop site, oop target); |
1083 |
1081 |
1084 static oop vmmethod(oop site); |
1082 static oop caller_method(oop site); |
1085 static void set_vmmethod(oop site, oop ref); |
1083 static void set_caller_method(oop site, oop ref); |
|
1084 |
|
1085 static jint caller_bci(oop site); |
|
1086 static void set_caller_bci(oop site, jint bci); |
1086 |
1087 |
1087 // Testers |
1088 // Testers |
1088 static bool is_subclass(klassOop klass) { |
1089 static bool is_subclass(klassOop klass) { |
1089 return Klass::cast(klass)->is_subclass_of(SystemDictionary::CallSite_klass()); |
1090 return Klass::cast(klass)->is_subclass_of(SystemDictionary::CallSite_klass()); |
1090 } |
1091 } |
1092 return obj != NULL && is_subclass(obj->klass()); |
1093 return obj != NULL && is_subclass(obj->klass()); |
1093 } |
1094 } |
1094 |
1095 |
1095 // Accessors for code generation: |
1096 // Accessors for code generation: |
1096 static int target_offset_in_bytes() { return _target_offset; } |
1097 static int target_offset_in_bytes() { return _target_offset; } |
1097 static int type_offset_in_bytes() { return _type_offset; } |
1098 static int caller_method_offset_in_bytes() { return _caller_method_offset; } |
1098 static int vmmethod_offset_in_bytes() { return _vmmethod_offset; } |
1099 static int caller_bci_offset_in_bytes() { return _caller_bci_offset; } |
1099 }; |
1100 }; |
1100 |
1101 |
1101 |
1102 |
1102 // Interface to java.security.AccessControlContext objects |
1103 // Interface to java.security.AccessControlContext objects |
1103 |
1104 |