Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(472)

Side by Side Diff: include/v8.h

Issue 1910253005: [api] Expose FunctionCallbackInfo::NewTarget (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Added a TODO Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/api-arguments.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** \mainpage V8 API Reference Guide 5 /** \mainpage V8 API Reference Guide
6 * 6 *
7 * V8 is Google's open source JavaScript engine. 7 * V8 is Google's open source JavaScript engine.
8 * 8 *
9 * This set of documents provides reference material generated from the 9 * This set of documents provides reference material generated from the
10 * V8 header file, include/v8.h. 10 * V8 header file, include/v8.h.
(...skipping 3174 matching lines...) Expand 10 before | Expand all | Expand 10 after
3185 */ 3185 */
3186 template<typename T> 3186 template<typename T>
3187 class FunctionCallbackInfo { 3187 class FunctionCallbackInfo {
3188 public: 3188 public:
3189 V8_INLINE int Length() const; 3189 V8_INLINE int Length() const;
3190 V8_INLINE Local<Value> operator[](int i) const; 3190 V8_INLINE Local<Value> operator[](int i) const;
3191 V8_INLINE V8_DEPRECATED("Use Data() to explicitly pass Callee instead", 3191 V8_INLINE V8_DEPRECATED("Use Data() to explicitly pass Callee instead",
3192 Local<Function> Callee() const); 3192 Local<Function> Callee() const);
3193 V8_INLINE Local<Object> This() const; 3193 V8_INLINE Local<Object> This() const;
3194 V8_INLINE Local<Object> Holder() const; 3194 V8_INLINE Local<Object> Holder() const;
3195 V8_INLINE Local<Value> NewTarget() const;
3195 V8_INLINE bool IsConstructCall() const; 3196 V8_INLINE bool IsConstructCall() const;
3196 V8_INLINE Local<Value> Data() const; 3197 V8_INLINE Local<Value> Data() const;
3197 V8_INLINE Isolate* GetIsolate() const; 3198 V8_INLINE Isolate* GetIsolate() const;
3198 V8_INLINE ReturnValue<T> GetReturnValue() const; 3199 V8_INLINE ReturnValue<T> GetReturnValue() const;
3199 // This shouldn't be public, but the arm compiler needs it. 3200 // This shouldn't be public, but the arm compiler needs it.
3200 static const int kArgsLength = 7; 3201 static const int kArgsLength = 8;
3201 3202
3202 protected: 3203 protected:
3203 friend class internal::FunctionCallbackArguments; 3204 friend class internal::FunctionCallbackArguments;
3204 friend class internal::CustomArguments<FunctionCallbackInfo>; 3205 friend class internal::CustomArguments<FunctionCallbackInfo>;
3205 static const int kHolderIndex = 0; 3206 static const int kHolderIndex = 0;
3206 static const int kIsolateIndex = 1; 3207 static const int kIsolateIndex = 1;
3207 static const int kReturnValueDefaultValueIndex = 2; 3208 static const int kReturnValueDefaultValueIndex = 2;
3208 static const int kReturnValueIndex = 3; 3209 static const int kReturnValueIndex = 3;
3209 static const int kDataIndex = 4; 3210 static const int kDataIndex = 4;
3210 static const int kCalleeIndex = 5; 3211 static const int kCalleeIndex = 5;
3211 static const int kContextSaveIndex = 6; 3212 static const int kContextSaveIndex = 6;
3213 static const int kNewTargetIndex = 7;
3212 3214
3213 V8_INLINE FunctionCallbackInfo(internal::Object** implicit_args, 3215 V8_INLINE FunctionCallbackInfo(internal::Object** implicit_args,
3214 internal::Object** values, 3216 internal::Object** values, int length);
3215 int length,
3216 bool is_construct_call);
3217 internal::Object** implicit_args_; 3217 internal::Object** implicit_args_;
3218 internal::Object** values_; 3218 internal::Object** values_;
3219 int length_; 3219 int length_;
3220 int is_construct_call_;
3221 }; 3220 };
3222 3221
3223 3222
3224 /** 3223 /**
3225 * The information passed to a property callback about the context 3224 * The information passed to a property callback about the context
3226 * of the property access. 3225 * of the property access.
3227 */ 3226 */
3228 template<typename T> 3227 template<typename T>
3229 class PropertyCallbackInfo { 3228 class PropertyCallbackInfo {
3230 public: 3229 public:
(...skipping 4627 matching lines...) Expand 10 before | Expand all | Expand 10 after
7858 // Uncompilable to prevent inadvertent misuse. 7857 // Uncompilable to prevent inadvertent misuse.
7859 TYPE_CHECK(S*, Primitive); 7858 TYPE_CHECK(S*, Primitive);
7860 } 7859 }
7861 7860
7862 template<typename T> 7861 template<typename T>
7863 internal::Object* ReturnValue<T>::GetDefaultValue() { 7862 internal::Object* ReturnValue<T>::GetDefaultValue() {
7864 // Default value is always the pointer below value_ on the stack. 7863 // Default value is always the pointer below value_ on the stack.
7865 return value_[-1]; 7864 return value_[-1];
7866 } 7865 }
7867 7866
7868 7867 template <typename T>
7869 template<typename T>
7870 FunctionCallbackInfo<T>::FunctionCallbackInfo(internal::Object** implicit_args, 7868 FunctionCallbackInfo<T>::FunctionCallbackInfo(internal::Object** implicit_args,
7871 internal::Object** values, 7869 internal::Object** values,
7872 int length, 7870 int length)
7873 bool is_construct_call) 7871 : implicit_args_(implicit_args), values_(values), length_(length) {}
7874 : implicit_args_(implicit_args),
7875 values_(values),
7876 length_(length),
7877 is_construct_call_(is_construct_call) { }
7878
7879 7872
7880 template<typename T> 7873 template<typename T>
7881 Local<Value> FunctionCallbackInfo<T>::operator[](int i) const { 7874 Local<Value> FunctionCallbackInfo<T>::operator[](int i) const {
7882 if (i < 0 || length_ <= i) return Local<Value>(*Undefined(GetIsolate())); 7875 if (i < 0 || length_ <= i) return Local<Value>(*Undefined(GetIsolate()));
7883 return Local<Value>(reinterpret_cast<Value*>(values_ - i)); 7876 return Local<Value>(reinterpret_cast<Value*>(values_ - i));
7884 } 7877 }
7885 7878
7886 7879
7887 template<typename T> 7880 template<typename T>
7888 Local<Function> FunctionCallbackInfo<T>::Callee() const { 7881 Local<Function> FunctionCallbackInfo<T>::Callee() const {
7889 return Local<Function>(reinterpret_cast<Function*>( 7882 return Local<Function>(reinterpret_cast<Function*>(
7890 &implicit_args_[kCalleeIndex])); 7883 &implicit_args_[kCalleeIndex]));
7891 } 7884 }
7892 7885
7893 7886
7894 template<typename T> 7887 template<typename T>
7895 Local<Object> FunctionCallbackInfo<T>::This() const { 7888 Local<Object> FunctionCallbackInfo<T>::This() const {
7896 return Local<Object>(reinterpret_cast<Object*>(values_ + 1)); 7889 return Local<Object>(reinterpret_cast<Object*>(values_ + 1));
7897 } 7890 }
7898 7891
7899 7892
7900 template<typename T> 7893 template<typename T>
7901 Local<Object> FunctionCallbackInfo<T>::Holder() const { 7894 Local<Object> FunctionCallbackInfo<T>::Holder() const {
7902 return Local<Object>(reinterpret_cast<Object*>( 7895 return Local<Object>(reinterpret_cast<Object*>(
7903 &implicit_args_[kHolderIndex])); 7896 &implicit_args_[kHolderIndex]));
7904 } 7897 }
7905 7898
7899 template <typename T>
7900 Local<Value> FunctionCallbackInfo<T>::NewTarget() const {
7901 return Local<Value>(
7902 reinterpret_cast<Value*>(&implicit_args_[kNewTargetIndex]));
7903 }
7906 7904
7907 template<typename T> 7905 template <typename T>
7908 Local<Value> FunctionCallbackInfo<T>::Data() const { 7906 Local<Value> FunctionCallbackInfo<T>::Data() const {
7909 return Local<Value>(reinterpret_cast<Value*>(&implicit_args_[kDataIndex])); 7907 return Local<Value>(reinterpret_cast<Value*>(&implicit_args_[kDataIndex]));
7910 } 7908 }
7911 7909
7912 7910
7913 template<typename T> 7911 template<typename T>
7914 Isolate* FunctionCallbackInfo<T>::GetIsolate() const { 7912 Isolate* FunctionCallbackInfo<T>::GetIsolate() const {
7915 return *reinterpret_cast<Isolate**>(&implicit_args_[kIsolateIndex]); 7913 return *reinterpret_cast<Isolate**>(&implicit_args_[kIsolateIndex]);
7916 } 7914 }
7917 7915
7918 7916
7919 template<typename T> 7917 template<typename T>
7920 ReturnValue<T> FunctionCallbackInfo<T>::GetReturnValue() const { 7918 ReturnValue<T> FunctionCallbackInfo<T>::GetReturnValue() const {
7921 return ReturnValue<T>(&implicit_args_[kReturnValueIndex]); 7919 return ReturnValue<T>(&implicit_args_[kReturnValueIndex]);
7922 } 7920 }
7923 7921
7924 7922
7925 template<typename T> 7923 template<typename T>
7926 bool FunctionCallbackInfo<T>::IsConstructCall() const { 7924 bool FunctionCallbackInfo<T>::IsConstructCall() const {
7927 return is_construct_call_ & 0x1; 7925 return !NewTarget()->IsUndefined();
7928 } 7926 }
7929 7927
7930 7928
7931 template<typename T> 7929 template<typename T>
7932 int FunctionCallbackInfo<T>::Length() const { 7930 int FunctionCallbackInfo<T>::Length() const {
7933 return length_; 7931 return length_;
7934 } 7932 }
7935 7933
7936 ScriptOrigin::ScriptOrigin(Local<Value> resource_name, 7934 ScriptOrigin::ScriptOrigin(Local<Value> resource_name,
7937 Local<Integer> resource_line_offset, 7935 Local<Integer> resource_line_offset,
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after
8771 */ 8769 */
8772 8770
8773 8771
8774 } // namespace v8 8772 } // namespace v8
8775 8773
8776 8774
8777 #undef TYPE_CHECK 8775 #undef TYPE_CHECK
8778 8776
8779 8777
8780 #endif // INCLUDE_V8_H_ 8778 #endif // INCLUDE_V8_H_
OLDNEW
« no previous file with comments | « no previous file | src/api-arguments.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698