OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 class String; | 137 class String; |
138 class StringObject; | 138 class StringObject; |
139 class Symbol; | 139 class Symbol; |
140 class SymbolObject; | 140 class SymbolObject; |
141 class Uint32; | 141 class Uint32; |
142 class Utils; | 142 class Utils; |
143 class Value; | 143 class Value; |
144 template <class T> class Handle; | 144 template <class T> class Handle; |
145 template <class T> class Local; | 145 template <class T> class Local; |
146 template <class T> class Persistent; | 146 template <class T> class Persistent; |
| 147 class FunctionTemplate; |
| 148 class ObjectTemplate; |
| 149 class Data; |
| 150 class AccessorInfo; |
| 151 template<typename T> class PropertyCallbackInfo; |
| 152 class StackTrace; |
| 153 class StackFrame; |
| 154 class Isolate; |
| 155 class DeclaredAccessorDescriptor; |
| 156 class ObjectOperationDescriptor; |
| 157 class RawOperationDescriptor; |
147 | 158 |
148 namespace internal { | 159 namespace internal { |
149 class Arguments; | 160 class Arguments; |
150 class Heap; | 161 class Heap; |
151 class HeapObject; | 162 class HeapObject; |
152 class Isolate; | 163 class Isolate; |
153 class Object; | 164 class Object; |
| 165 template<typename T> |
| 166 class CustomArguments; |
| 167 class PropertyCallbackArguments; |
| 168 class FunctionCallbackArguments; |
154 } | 169 } |
155 | 170 |
156 | 171 |
157 /** | 172 /** |
158 * General purpose unique identifier. | 173 * General purpose unique identifier. |
159 */ | 174 */ |
160 class UniqueId { | 175 class UniqueId { |
161 public: | 176 public: |
162 explicit UniqueId(intptr_t data) | 177 explicit UniqueId(intptr_t data) |
163 : data_(data) {} | 178 : data_(data) {} |
(...skipping 1765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1929 kExternalPixelArray | 1944 kExternalPixelArray |
1930 }; | 1945 }; |
1931 | 1946 |
1932 /** | 1947 /** |
1933 * Accessor[Getter|Setter] are used as callback functions when | 1948 * Accessor[Getter|Setter] are used as callback functions when |
1934 * setting|getting a particular property. See Object and ObjectTemplate's | 1949 * setting|getting a particular property. See Object and ObjectTemplate's |
1935 * method SetAccessor. | 1950 * method SetAccessor. |
1936 */ | 1951 */ |
1937 typedef Handle<Value> (*AccessorGetter)(Local<String> property, | 1952 typedef Handle<Value> (*AccessorGetter)(Local<String> property, |
1938 const AccessorInfo& info); | 1953 const AccessorInfo& info); |
| 1954 typedef void (*AccessorGetterCallback)( |
| 1955 Local<String> property, |
| 1956 const PropertyCallbackInfo<Value>& info); |
1939 | 1957 |
1940 | 1958 |
1941 typedef void (*AccessorSetter)(Local<String> property, | 1959 typedef void (*AccessorSetter)(Local<String> property, |
1942 Local<Value> value, | 1960 Local<Value> value, |
1943 const AccessorInfo& info); | 1961 const AccessorInfo& info); |
| 1962 typedef void (*AccessorSetterCallback)( |
| 1963 Local<String> property, |
| 1964 Local<Value> value, |
| 1965 const PropertyCallbackInfo<void>& info); |
1944 | 1966 |
1945 | 1967 |
1946 /** | 1968 /** |
1947 * Access control specifications. | 1969 * Access control specifications. |
1948 * | 1970 * |
1949 * Some accessors should be accessible across contexts. These | 1971 * Some accessors should be accessible across contexts. These |
1950 * accessors have an explicit access control parameter which specifies | 1972 * accessors have an explicit access control parameter which specifies |
1951 * the kind of cross-context access that should be allowed. | 1973 * the kind of cross-context access that should be allowed. |
1952 * | 1974 * |
1953 * Additionally, for security, accessors can prohibit overwriting by | 1975 * Additionally, for security, accessors can prohibit overwriting by |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2003 bool Delete(Handle<Value> key); | 2025 bool Delete(Handle<Value> key); |
2004 | 2026 |
2005 // Delete a property on this object bypassing interceptors and | 2027 // Delete a property on this object bypassing interceptors and |
2006 // ignoring dont-delete attributes. | 2028 // ignoring dont-delete attributes. |
2007 bool ForceDelete(Handle<Value> key); | 2029 bool ForceDelete(Handle<Value> key); |
2008 | 2030 |
2009 bool Has(uint32_t index); | 2031 bool Has(uint32_t index); |
2010 | 2032 |
2011 bool Delete(uint32_t index); | 2033 bool Delete(uint32_t index); |
2012 | 2034 |
| 2035 // TODO(dcarney): deprecate |
2013 bool SetAccessor(Handle<String> name, | 2036 bool SetAccessor(Handle<String> name, |
2014 AccessorGetter getter, | 2037 AccessorGetter getter, |
2015 AccessorSetter setter = 0, | 2038 AccessorSetter setter = 0, |
2016 Handle<Value> data = Handle<Value>(), | 2039 Handle<Value> data = Handle<Value>(), |
2017 AccessControl settings = DEFAULT, | 2040 AccessControl settings = DEFAULT, |
2018 PropertyAttribute attribute = None); | 2041 PropertyAttribute attribute = None); |
| 2042 bool SetAccessor(Handle<String> name, |
| 2043 AccessorGetterCallback getter, |
| 2044 AccessorSetterCallback setter = 0, |
| 2045 Handle<Value> data = Handle<Value>(), |
| 2046 AccessControl settings = DEFAULT, |
| 2047 PropertyAttribute attribute = None); |
2019 | 2048 |
2020 // This function is not yet stable and should not be used at this time. | 2049 // This function is not yet stable and should not be used at this time. |
2021 bool SetAccessor(Handle<String> name, | 2050 bool SetAccessor(Handle<String> name, |
2022 Handle<DeclaredAccessorDescriptor> descriptor, | 2051 Handle<DeclaredAccessorDescriptor> descriptor, |
2023 AccessControl settings = DEFAULT, | 2052 AccessControl settings = DEFAULT, |
2024 PropertyAttribute attribute = None); | 2053 PropertyAttribute attribute = None); |
2025 | 2054 |
2026 /** | 2055 /** |
2027 * Returns an array containing the names of the enumerable properties | 2056 * Returns an array containing the names of the enumerable properties |
2028 * of this object, including properties from prototype objects. The | 2057 * of this object, including properties from prototype objects. The |
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2697 PropertyAttribute attributes = None); | 2726 PropertyAttribute attributes = None); |
2698 V8_INLINE(void Set(const char* name, Handle<Data> value)); | 2727 V8_INLINE(void Set(const char* name, Handle<Data> value)); |
2699 private: | 2728 private: |
2700 Template(); | 2729 Template(); |
2701 | 2730 |
2702 friend class ObjectTemplate; | 2731 friend class ObjectTemplate; |
2703 friend class FunctionTemplate; | 2732 friend class FunctionTemplate; |
2704 }; | 2733 }; |
2705 | 2734 |
2706 | 2735 |
| 2736 template<typename T> |
| 2737 class V8EXPORT ReturnValue { |
| 2738 public: |
| 2739 V8_INLINE(explicit ReturnValue(internal::Object** slot)); |
| 2740 // Handle setters |
| 2741 V8_INLINE(void Set(const Persistent<T>& handle)); |
| 2742 V8_INLINE(void Set(const Handle<T> handle)); |
| 2743 // TODO(dcarney): implement |
| 2744 // Fast primitive setters |
| 2745 // V8_INLINE(void Set(Isolate* isolate, bool)); |
| 2746 // V8_INLINE(void Set(Isolate* isolate, float i)); |
| 2747 // V8_INLINE(void Set(Isolate* isolate, double i)); |
| 2748 // V8_INLINE(void Set(Isolate* isolate, int32_t i)); |
| 2749 // V8_INLINE(void Set(Isolate* isolate, uint32_t i)); |
| 2750 // Fast JS primitive setters |
| 2751 // V8_INLINE(void SetNull(Isolate* isolate)); |
| 2752 // V8_INLINE(void SetUndefined(Isolate* isolate)); |
| 2753 private: |
| 2754 internal::Object** value_; |
| 2755 }; |
| 2756 |
| 2757 |
2707 /** | 2758 /** |
2708 * The argument information given to function call callbacks. This | 2759 * The argument information given to function call callbacks. This |
2709 * class provides access to information about the context of the call, | 2760 * class provides access to information about the context of the call, |
2710 * including the receiver, the number and values of arguments, and | 2761 * including the receiver, the number and values of arguments, and |
2711 * the holder of the function. | 2762 * the holder of the function. |
2712 */ | 2763 */ |
2713 class V8EXPORT Arguments { | 2764 template<typename T> |
| 2765 class V8EXPORT FunctionCallbackInfo { |
2714 public: | 2766 public: |
2715 V8_INLINE(int Length() const); | 2767 V8_INLINE(int Length() const); |
2716 V8_INLINE(Local<Value> operator[](int i) const); | 2768 V8_INLINE(Local<Value> operator[](int i) const); |
2717 V8_INLINE(Local<Function> Callee() const); | 2769 V8_INLINE(Local<Function> Callee() const); |
2718 V8_INLINE(Local<Object> This() const); | 2770 V8_INLINE(Local<Object> This() const); |
2719 V8_INLINE(Local<Object> Holder() const); | 2771 V8_INLINE(Local<Object> Holder() const); |
2720 V8_INLINE(bool IsConstructCall() const); | 2772 V8_INLINE(bool IsConstructCall() const); |
2721 V8_INLINE(Local<Value> Data() const); | 2773 V8_INLINE(Local<Value> Data() const); |
2722 V8_INLINE(Isolate* GetIsolate() const); | 2774 V8_INLINE(Isolate* GetIsolate() const); |
| 2775 V8_INLINE(ReturnValue<T> GetReturnValue() const); |
| 2776 // This shouldn't be public, but the arm compiler needs it. |
| 2777 static const int kArgsLength = 5; |
2723 | 2778 |
2724 private: | 2779 protected: |
2725 static const int kIsolateIndex = 0; | 2780 friend class internal::FunctionCallbackArguments; |
2726 static const int kDataIndex = -1; | 2781 friend class internal::CustomArguments<FunctionCallbackInfo>; |
2727 static const int kCalleeIndex = -2; | 2782 static const int kReturnValueIndex = 0; |
2728 static const int kHolderIndex = -3; | 2783 static const int kIsolateIndex = -1; |
| 2784 static const int kDataIndex = -2; |
| 2785 static const int kCalleeIndex = -3; |
| 2786 static const int kHolderIndex = -4; |
2729 | 2787 |
2730 friend class ImplementationUtilities; | 2788 V8_INLINE(FunctionCallbackInfo(internal::Object** implicit_args, |
2731 V8_INLINE(Arguments(internal::Object** implicit_args, | |
2732 internal::Object** values, | 2789 internal::Object** values, |
2733 int length, | 2790 int length, |
2734 bool is_construct_call)); | 2791 bool is_construct_call)); |
2735 internal::Object** implicit_args_; | 2792 internal::Object** implicit_args_; |
2736 internal::Object** values_; | 2793 internal::Object** values_; |
2737 int length_; | 2794 int length_; |
2738 bool is_construct_call_; | 2795 bool is_construct_call_; |
2739 }; | 2796 }; |
2740 | 2797 |
2741 | 2798 |
| 2799 class V8EXPORT Arguments : public FunctionCallbackInfo<Value> { |
| 2800 private: |
| 2801 friend class internal::FunctionCallbackArguments; |
| 2802 V8_INLINE(Arguments(internal::Object** implicit_args, |
| 2803 internal::Object** values, |
| 2804 int length, |
| 2805 bool is_construct_call)); |
| 2806 }; |
| 2807 |
2742 /** | 2808 /** |
2743 * The information passed to an accessor callback about the context | 2809 * The information passed to a property callback about the context |
2744 * of the property access. | 2810 * of the property access. |
2745 */ | 2811 */ |
2746 class V8EXPORT AccessorInfo { | 2812 template<typename T> |
| 2813 class V8EXPORT PropertyCallbackInfo { |
2747 public: | 2814 public: |
2748 V8_INLINE(AccessorInfo(internal::Object** args)) | |
2749 : args_(args) { } | |
2750 V8_INLINE(Isolate* GetIsolate() const); | 2815 V8_INLINE(Isolate* GetIsolate() const); |
2751 V8_INLINE(Local<Value> Data() const); | 2816 V8_INLINE(Local<Value> Data() const); |
2752 V8_INLINE(Local<Object> This() const); | 2817 V8_INLINE(Local<Object> This() const); |
2753 V8_INLINE(Local<Object> Holder() const); | 2818 V8_INLINE(Local<Object> Holder() const); |
| 2819 V8_INLINE(ReturnValue<T> GetReturnValue() const); |
| 2820 // This shouldn't be public, but the arm compiler needs it. |
| 2821 static const int kArgsLength = 5; |
2754 | 2822 |
2755 private: | 2823 protected: |
| 2824 friend class MacroAssembler; |
| 2825 friend class internal::PropertyCallbackArguments; |
| 2826 friend class internal::CustomArguments<PropertyCallbackInfo>; |
| 2827 static const int kThisIndex = 0; |
| 2828 static const int kHolderIndex = -1; |
| 2829 static const int kDataIndex = -2; |
| 2830 static const int kIsolateIndex = -3; |
| 2831 static const int kReturnValueIndex = -4; |
| 2832 |
| 2833 V8_INLINE(PropertyCallbackInfo(internal::Object** args)) |
| 2834 : args_(args) { } |
2756 internal::Object** args_; | 2835 internal::Object** args_; |
2757 }; | 2836 }; |
2758 | 2837 |
2759 | 2838 |
| 2839 class V8EXPORT AccessorInfo : public PropertyCallbackInfo<Value> { |
| 2840 private: |
| 2841 friend class internal::PropertyCallbackArguments; |
| 2842 V8_INLINE(AccessorInfo(internal::Object** args)) |
| 2843 : PropertyCallbackInfo<Value>(args) { } |
| 2844 }; |
| 2845 |
| 2846 |
2760 typedef Handle<Value> (*InvocationCallback)(const Arguments& args); | 2847 typedef Handle<Value> (*InvocationCallback)(const Arguments& args); |
| 2848 typedef void (*FunctionCallback)(const FunctionCallbackInfo<Value>& info); |
2761 | 2849 |
2762 /** | 2850 /** |
2763 * NamedProperty[Getter|Setter] are used as interceptors on object. | 2851 * NamedProperty[Getter|Setter] are used as interceptors on object. |
2764 * See ObjectTemplate::SetNamedPropertyHandler. | 2852 * See ObjectTemplate::SetNamedPropertyHandler. |
2765 */ | 2853 */ |
2766 typedef Handle<Value> (*NamedPropertyGetter)(Local<String> property, | 2854 typedef Handle<Value> (*NamedPropertyGetter)(Local<String> property, |
2767 const AccessorInfo& info); | 2855 const AccessorInfo& info); |
| 2856 typedef void (*NamedPropertyGetterCallback)( |
| 2857 Local<String> property, |
| 2858 const PropertyCallbackInfo<Value>& info); |
2768 | 2859 |
2769 | 2860 |
2770 /** | 2861 /** |
2771 * Returns the value if the setter intercepts the request. | 2862 * Returns the value if the setter intercepts the request. |
2772 * Otherwise, returns an empty handle. | 2863 * Otherwise, returns an empty handle. |
2773 */ | 2864 */ |
2774 typedef Handle<Value> (*NamedPropertySetter)(Local<String> property, | 2865 typedef Handle<Value> (*NamedPropertySetter)(Local<String> property, |
2775 Local<Value> value, | 2866 Local<Value> value, |
2776 const AccessorInfo& info); | 2867 const AccessorInfo& info); |
| 2868 typedef void (*NamedPropertySetterCallback)( |
| 2869 Local<String> property, |
| 2870 Local<Value> value, |
| 2871 const PropertyCallbackInfo<Value>& info); |
| 2872 |
2777 | 2873 |
2778 /** | 2874 /** |
2779 * Returns a non-empty handle if the interceptor intercepts the request. | 2875 * Returns a non-empty handle if the interceptor intercepts the request. |
2780 * The result is an integer encoding property attributes (like v8::None, | 2876 * The result is an integer encoding property attributes (like v8::None, |
2781 * v8::DontEnum, etc.) | 2877 * v8::DontEnum, etc.) |
2782 */ | 2878 */ |
2783 typedef Handle<Integer> (*NamedPropertyQuery)(Local<String> property, | 2879 typedef Handle<Integer> (*NamedPropertyQuery)(Local<String> property, |
2784 const AccessorInfo& info); | 2880 const AccessorInfo& info); |
| 2881 typedef void (*NamedPropertyQueryCallback)( |
| 2882 Local<String> property, |
| 2883 const PropertyCallbackInfo<Integer>& info); |
2785 | 2884 |
2786 | 2885 |
2787 /** | 2886 /** |
2788 * Returns a non-empty handle if the deleter intercepts the request. | 2887 * Returns a non-empty handle if the deleter intercepts the request. |
2789 * The return value is true if the property could be deleted and false | 2888 * The return value is true if the property could be deleted and false |
2790 * otherwise. | 2889 * otherwise. |
2791 */ | 2890 */ |
2792 typedef Handle<Boolean> (*NamedPropertyDeleter)(Local<String> property, | 2891 typedef Handle<Boolean> (*NamedPropertyDeleter)(Local<String> property, |
2793 const AccessorInfo& info); | 2892 const AccessorInfo& info); |
| 2893 typedef void (*NamedPropertyDeleterCallback)( |
| 2894 Local<String> property, |
| 2895 const PropertyCallbackInfo<Boolean>& info); |
| 2896 |
2794 | 2897 |
2795 /** | 2898 /** |
2796 * Returns an array containing the names of the properties the named | 2899 * Returns an array containing the names of the properties the named |
2797 * property getter intercepts. | 2900 * property getter intercepts. |
2798 */ | 2901 */ |
2799 typedef Handle<Array> (*NamedPropertyEnumerator)(const AccessorInfo& info); | 2902 typedef Handle<Array> (*NamedPropertyEnumerator)(const AccessorInfo& info); |
| 2903 typedef void (*NamedPropertyEnumeratorCallback)( |
| 2904 const PropertyCallbackInfo<Array>& info); |
2800 | 2905 |
2801 | 2906 |
2802 /** | 2907 /** |
2803 * Returns the value of the property if the getter intercepts the | 2908 * Returns the value of the property if the getter intercepts the |
2804 * request. Otherwise, returns an empty handle. | 2909 * request. Otherwise, returns an empty handle. |
2805 */ | 2910 */ |
2806 typedef Handle<Value> (*IndexedPropertyGetter)(uint32_t index, | 2911 typedef Handle<Value> (*IndexedPropertyGetter)(uint32_t index, |
2807 const AccessorInfo& info); | 2912 const AccessorInfo& info); |
| 2913 typedef void (*IndexedPropertyGetterCallback)( |
| 2914 uint32_t index, |
| 2915 const PropertyCallbackInfo<Value>& info); |
2808 | 2916 |
2809 | 2917 |
2810 /** | 2918 /** |
2811 * Returns the value if the setter intercepts the request. | 2919 * Returns the value if the setter intercepts the request. |
2812 * Otherwise, returns an empty handle. | 2920 * Otherwise, returns an empty handle. |
2813 */ | 2921 */ |
2814 typedef Handle<Value> (*IndexedPropertySetter)(uint32_t index, | 2922 typedef Handle<Value> (*IndexedPropertySetter)(uint32_t index, |
2815 Local<Value> value, | 2923 Local<Value> value, |
2816 const AccessorInfo& info); | 2924 const AccessorInfo& info); |
| 2925 typedef void (*IndexedPropertySetterCallback)( |
| 2926 uint32_t index, |
| 2927 Local<Value> value, |
| 2928 const PropertyCallbackInfo<Value>& info); |
2817 | 2929 |
2818 | 2930 |
2819 /** | 2931 /** |
2820 * Returns a non-empty handle if the interceptor intercepts the request. | 2932 * Returns a non-empty handle if the interceptor intercepts the request. |
2821 * The result is an integer encoding property attributes. | 2933 * The result is an integer encoding property attributes. |
2822 */ | 2934 */ |
2823 typedef Handle<Integer> (*IndexedPropertyQuery)(uint32_t index, | 2935 typedef Handle<Integer> (*IndexedPropertyQuery)(uint32_t index, |
2824 const AccessorInfo& info); | 2936 const AccessorInfo& info); |
| 2937 typedef void (*IndexedPropertyQueryCallback)( |
| 2938 uint32_t index, |
| 2939 const PropertyCallbackInfo<Integer>& info); |
| 2940 |
2825 | 2941 |
2826 /** | 2942 /** |
2827 * Returns a non-empty handle if the deleter intercepts the request. | 2943 * Returns a non-empty handle if the deleter intercepts the request. |
2828 * The return value is true if the property could be deleted and false | 2944 * The return value is true if the property could be deleted and false |
2829 * otherwise. | 2945 * otherwise. |
2830 */ | 2946 */ |
2831 typedef Handle<Boolean> (*IndexedPropertyDeleter)(uint32_t index, | 2947 typedef Handle<Boolean> (*IndexedPropertyDeleter)(uint32_t index, |
2832 const AccessorInfo& info); | 2948 const AccessorInfo& info); |
| 2949 typedef void (*IndexedPropertyDeleterCallback)( |
| 2950 uint32_t index, |
| 2951 const PropertyCallbackInfo<Boolean>& info); |
| 2952 |
2833 | 2953 |
2834 /** | 2954 /** |
2835 * Returns an array containing the indices of the properties the | 2955 * Returns an array containing the indices of the properties the |
2836 * indexed property getter intercepts. | 2956 * indexed property getter intercepts. |
2837 */ | 2957 */ |
2838 typedef Handle<Array> (*IndexedPropertyEnumerator)(const AccessorInfo& info); | 2958 typedef Handle<Array> (*IndexedPropertyEnumerator)(const AccessorInfo& info); |
| 2959 typedef void (*IndexedPropertyEnumeratorCallback)( |
| 2960 const PropertyCallbackInfo<Array>& info); |
2839 | 2961 |
2840 | 2962 |
2841 /** | 2963 /** |
2842 * Access type specification. | 2964 * Access type specification. |
2843 */ | 2965 */ |
2844 enum AccessType { | 2966 enum AccessType { |
2845 ACCESS_GET, | 2967 ACCESS_GET, |
2846 ACCESS_SET, | 2968 ACCESS_SET, |
2847 ACCESS_HAS, | 2969 ACCESS_HAS, |
2848 ACCESS_DELETE, | 2970 ACCESS_DELETE, |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2958 * | 3080 * |
2959 * \code | 3081 * \code |
2960 * child_func.prototype.__proto__ == function.prototype; | 3082 * child_func.prototype.__proto__ == function.prototype; |
2961 * child_instance.instance_accessor calls 'InstanceAccessorCallback' | 3083 * child_instance.instance_accessor calls 'InstanceAccessorCallback' |
2962 * child_instance.instance_property == 3; | 3084 * child_instance.instance_property == 3; |
2963 * \endcode | 3085 * \endcode |
2964 */ | 3086 */ |
2965 class V8EXPORT FunctionTemplate : public Template { | 3087 class V8EXPORT FunctionTemplate : public Template { |
2966 public: | 3088 public: |
2967 /** Creates a function template.*/ | 3089 /** Creates a function template.*/ |
| 3090 // TODO(dcarney): deprecate |
2968 static Local<FunctionTemplate> New( | 3091 static Local<FunctionTemplate> New( |
2969 InvocationCallback callback = 0, | 3092 InvocationCallback callback = 0, |
2970 Handle<Value> data = Handle<Value>(), | 3093 Handle<Value> data = Handle<Value>(), |
2971 Handle<Signature> signature = Handle<Signature>(), | 3094 Handle<Signature> signature = Handle<Signature>(), |
2972 int length = 0); | 3095 int length = 0); |
| 3096 static Local<FunctionTemplate> New( |
| 3097 FunctionCallback callback, // TODO(dcarney): add back default param. |
| 3098 Handle<Value> data = Handle<Value>(), |
| 3099 Handle<Signature> signature = Handle<Signature>(), |
| 3100 int length = 0); |
| 3101 |
2973 /** Returns the unique function instance in the current execution context.*/ | 3102 /** Returns the unique function instance in the current execution context.*/ |
2974 Local<Function> GetFunction(); | 3103 Local<Function> GetFunction(); |
2975 | 3104 |
2976 /** | 3105 /** |
2977 * Set the call-handler callback for a FunctionTemplate. This | 3106 * Set the call-handler callback for a FunctionTemplate. This |
2978 * callback is called whenever the function created from this | 3107 * callback is called whenever the function created from this |
2979 * FunctionTemplate is called. | 3108 * FunctionTemplate is called. |
2980 */ | 3109 */ |
| 3110 // TODO(dcarney): deprecate |
2981 void SetCallHandler(InvocationCallback callback, | 3111 void SetCallHandler(InvocationCallback callback, |
2982 Handle<Value> data = Handle<Value>()); | 3112 Handle<Value> data = Handle<Value>()); |
| 3113 void SetCallHandler(FunctionCallback callback, |
| 3114 Handle<Value> data = Handle<Value>()); |
2983 | 3115 |
2984 /** Set the predefined length property for the FunctionTemplate. */ | 3116 /** Set the predefined length property for the FunctionTemplate. */ |
2985 void SetLength(int length); | 3117 void SetLength(int length); |
2986 | 3118 |
2987 /** Get the InstanceTemplate. */ | 3119 /** Get the InstanceTemplate. */ |
2988 Local<ObjectTemplate> InstanceTemplate(); | 3120 Local<ObjectTemplate> InstanceTemplate(); |
2989 | 3121 |
2990 /** Causes the function template to inherit from a parent function template.*/ | 3122 /** Causes the function template to inherit from a parent function template.*/ |
2991 void Inherit(Handle<FunctionTemplate> parent); | 3123 void Inherit(Handle<FunctionTemplate> parent); |
2992 | 3124 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3024 void ReadOnlyPrototype(); | 3156 void ReadOnlyPrototype(); |
3025 | 3157 |
3026 /** | 3158 /** |
3027 * Returns true if the given object is an instance of this function | 3159 * Returns true if the given object is an instance of this function |
3028 * template. | 3160 * template. |
3029 */ | 3161 */ |
3030 bool HasInstance(Handle<Value> object); | 3162 bool HasInstance(Handle<Value> object); |
3031 | 3163 |
3032 private: | 3164 private: |
3033 FunctionTemplate(); | 3165 FunctionTemplate(); |
3034 void SetNamedInstancePropertyHandler(NamedPropertyGetter getter, | |
3035 NamedPropertySetter setter, | |
3036 NamedPropertyQuery query, | |
3037 NamedPropertyDeleter remover, | |
3038 NamedPropertyEnumerator enumerator, | |
3039 Handle<Value> data); | |
3040 void SetIndexedInstancePropertyHandler(IndexedPropertyGetter getter, | |
3041 IndexedPropertySetter setter, | |
3042 IndexedPropertyQuery query, | |
3043 IndexedPropertyDeleter remover, | |
3044 IndexedPropertyEnumerator enumerator, | |
3045 Handle<Value> data); | |
3046 void SetInstanceCallAsFunctionHandler(InvocationCallback callback, | |
3047 Handle<Value> data); | |
3048 | |
3049 friend class Context; | 3166 friend class Context; |
3050 friend class ObjectTemplate; | 3167 friend class ObjectTemplate; |
3051 }; | 3168 }; |
3052 | 3169 |
3053 | 3170 |
3054 /** | 3171 /** |
3055 * An ObjectTemplate is used to create objects at runtime. | 3172 * An ObjectTemplate is used to create objects at runtime. |
3056 * | 3173 * |
3057 * Properties added to an ObjectTemplate are added to each object | 3174 * Properties added to an ObjectTemplate are added to each object |
3058 * created from the ObjectTemplate. | 3175 * created from the ObjectTemplate. |
(...skipping 28 matching lines...) Expand all Loading... |
3087 * The combination ALL_CAN_READ | ALL_CAN_WRITE can be used to allow all | 3204 * The combination ALL_CAN_READ | ALL_CAN_WRITE can be used to allow all |
3088 * cross-context access. | 3205 * cross-context access. |
3089 * \param attribute The attributes of the property for which an accessor | 3206 * \param attribute The attributes of the property for which an accessor |
3090 * is added. | 3207 * is added. |
3091 * \param signature The signature describes valid receivers for the accessor | 3208 * \param signature The signature describes valid receivers for the accessor |
3092 * and is used to perform implicit instance checks against them. If the | 3209 * and is used to perform implicit instance checks against them. If the |
3093 * receiver is incompatible (i.e. is not an instance of the constructor as | 3210 * receiver is incompatible (i.e. is not an instance of the constructor as |
3094 * defined by FunctionTemplate::HasInstance()), an implicit TypeError is | 3211 * defined by FunctionTemplate::HasInstance()), an implicit TypeError is |
3095 * thrown and no callback is invoked. | 3212 * thrown and no callback is invoked. |
3096 */ | 3213 */ |
| 3214 // TODO(dcarney): deprecate |
3097 void SetAccessor(Handle<String> name, | 3215 void SetAccessor(Handle<String> name, |
3098 AccessorGetter getter, | 3216 AccessorGetter getter, |
3099 AccessorSetter setter = 0, | 3217 AccessorSetter setter = 0, |
3100 Handle<Value> data = Handle<Value>(), | 3218 Handle<Value> data = Handle<Value>(), |
3101 AccessControl settings = DEFAULT, | 3219 AccessControl settings = DEFAULT, |
3102 PropertyAttribute attribute = None, | 3220 PropertyAttribute attribute = None, |
3103 Handle<AccessorSignature> signature = | 3221 Handle<AccessorSignature> signature = |
3104 Handle<AccessorSignature>()); | 3222 Handle<AccessorSignature>()); |
| 3223 void SetAccessor(Handle<String> name, |
| 3224 AccessorGetterCallback getter, |
| 3225 AccessorSetterCallback setter = 0, |
| 3226 Handle<Value> data = Handle<Value>(), |
| 3227 AccessControl settings = DEFAULT, |
| 3228 PropertyAttribute attribute = None, |
| 3229 Handle<AccessorSignature> signature = |
| 3230 Handle<AccessorSignature>()); |
3105 | 3231 |
3106 // This function is not yet stable and should not be used at this time. | 3232 // This function is not yet stable and should not be used at this time. |
3107 bool SetAccessor(Handle<String> name, | 3233 bool SetAccessor(Handle<String> name, |
3108 Handle<DeclaredAccessorDescriptor> descriptor, | 3234 Handle<DeclaredAccessorDescriptor> descriptor, |
3109 AccessControl settings = DEFAULT, | 3235 AccessControl settings = DEFAULT, |
3110 PropertyAttribute attribute = None, | 3236 PropertyAttribute attribute = None, |
3111 Handle<AccessorSignature> signature = | 3237 Handle<AccessorSignature> signature = |
3112 Handle<AccessorSignature>()); | 3238 Handle<AccessorSignature>()); |
3113 | 3239 |
3114 /** | 3240 /** |
3115 * Sets a named property handler on the object template. | 3241 * Sets a named property handler on the object template. |
3116 * | 3242 * |
3117 * Whenever a named property is accessed on objects created from | 3243 * Whenever a named property is accessed on objects created from |
3118 * this object template, the provided callback is invoked instead of | 3244 * this object template, the provided callback is invoked instead of |
3119 * accessing the property directly on the JavaScript object. | 3245 * accessing the property directly on the JavaScript object. |
3120 * | 3246 * |
3121 * \param getter The callback to invoke when getting a property. | 3247 * \param getter The callback to invoke when getting a property. |
3122 * \param setter The callback to invoke when setting a property. | 3248 * \param setter The callback to invoke when setting a property. |
3123 * \param query The callback to invoke to check if a property is present, | 3249 * \param query The callback to invoke to check if a property is present, |
3124 * and if present, get its attributes. | 3250 * and if present, get its attributes. |
3125 * \param deleter The callback to invoke when deleting a property. | 3251 * \param deleter The callback to invoke when deleting a property. |
3126 * \param enumerator The callback to invoke to enumerate all the named | 3252 * \param enumerator The callback to invoke to enumerate all the named |
3127 * properties of an object. | 3253 * properties of an object. |
3128 * \param data A piece of data that will be passed to the callbacks | 3254 * \param data A piece of data that will be passed to the callbacks |
3129 * whenever they are invoked. | 3255 * whenever they are invoked. |
3130 */ | 3256 */ |
| 3257 // TODO(dcarney): deprecate |
3131 void SetNamedPropertyHandler(NamedPropertyGetter getter, | 3258 void SetNamedPropertyHandler(NamedPropertyGetter getter, |
3132 NamedPropertySetter setter = 0, | 3259 NamedPropertySetter setter = 0, |
3133 NamedPropertyQuery query = 0, | 3260 NamedPropertyQuery query = 0, |
3134 NamedPropertyDeleter deleter = 0, | 3261 NamedPropertyDeleter deleter = 0, |
3135 NamedPropertyEnumerator enumerator = 0, | 3262 NamedPropertyEnumerator enumerator = 0, |
3136 Handle<Value> data = Handle<Value>()); | 3263 Handle<Value> data = Handle<Value>()); |
| 3264 void SetNamedPropertyHandler( |
| 3265 NamedPropertyGetterCallback getter, |
| 3266 NamedPropertySetterCallback setter = 0, |
| 3267 NamedPropertyQueryCallback query = 0, |
| 3268 NamedPropertyDeleterCallback deleter = 0, |
| 3269 NamedPropertyEnumeratorCallback enumerator = 0, |
| 3270 Handle<Value> data = Handle<Value>()); |
3137 | 3271 |
3138 /** | 3272 /** |
3139 * Sets an indexed property handler on the object template. | 3273 * Sets an indexed property handler on the object template. |
3140 * | 3274 * |
3141 * Whenever an indexed property is accessed on objects created from | 3275 * Whenever an indexed property is accessed on objects created from |
3142 * this object template, the provided callback is invoked instead of | 3276 * this object template, the provided callback is invoked instead of |
3143 * accessing the property directly on the JavaScript object. | 3277 * accessing the property directly on the JavaScript object. |
3144 * | 3278 * |
3145 * \param getter The callback to invoke when getting a property. | 3279 * \param getter The callback to invoke when getting a property. |
3146 * \param setter The callback to invoke when setting a property. | 3280 * \param setter The callback to invoke when setting a property. |
3147 * \param query The callback to invoke to check if an object has a property. | 3281 * \param query The callback to invoke to check if an object has a property. |
3148 * \param deleter The callback to invoke when deleting a property. | 3282 * \param deleter The callback to invoke when deleting a property. |
3149 * \param enumerator The callback to invoke to enumerate all the indexed | 3283 * \param enumerator The callback to invoke to enumerate all the indexed |
3150 * properties of an object. | 3284 * properties of an object. |
3151 * \param data A piece of data that will be passed to the callbacks | 3285 * \param data A piece of data that will be passed to the callbacks |
3152 * whenever they are invoked. | 3286 * whenever they are invoked. |
3153 */ | 3287 */ |
| 3288 // TODO(dcarney): deprecate |
3154 void SetIndexedPropertyHandler(IndexedPropertyGetter getter, | 3289 void SetIndexedPropertyHandler(IndexedPropertyGetter getter, |
3155 IndexedPropertySetter setter = 0, | 3290 IndexedPropertySetter setter = 0, |
3156 IndexedPropertyQuery query = 0, | 3291 IndexedPropertyQuery query = 0, |
3157 IndexedPropertyDeleter deleter = 0, | 3292 IndexedPropertyDeleter deleter = 0, |
3158 IndexedPropertyEnumerator enumerator = 0, | 3293 IndexedPropertyEnumerator enumerator = 0, |
3159 Handle<Value> data = Handle<Value>()); | 3294 Handle<Value> data = Handle<Value>()); |
| 3295 void SetIndexedPropertyHandler( |
| 3296 IndexedPropertyGetterCallback getter, |
| 3297 IndexedPropertySetterCallback setter = 0, |
| 3298 IndexedPropertyQueryCallback query = 0, |
| 3299 IndexedPropertyDeleterCallback deleter = 0, |
| 3300 IndexedPropertyEnumeratorCallback enumerator = 0, |
| 3301 Handle<Value> data = Handle<Value>()); |
3160 | 3302 |
3161 /** | 3303 /** |
3162 * Sets the callback to be used when calling instances created from | 3304 * Sets the callback to be used when calling instances created from |
3163 * this template as a function. If no callback is set, instances | 3305 * this template as a function. If no callback is set, instances |
3164 * behave like normal JavaScript objects that cannot be called as a | 3306 * behave like normal JavaScript objects that cannot be called as a |
3165 * function. | 3307 * function. |
3166 */ | 3308 */ |
| 3309 // TODO(dcarney): deprecate |
3167 void SetCallAsFunctionHandler(InvocationCallback callback, | 3310 void SetCallAsFunctionHandler(InvocationCallback callback, |
3168 Handle<Value> data = Handle<Value>()); | 3311 Handle<Value> data = Handle<Value>()); |
| 3312 void SetCallAsFunctionHandler(FunctionCallback callback, |
| 3313 Handle<Value> data = Handle<Value>()); |
3169 | 3314 |
3170 /** | 3315 /** |
3171 * Mark object instances of the template as undetectable. | 3316 * Mark object instances of the template as undetectable. |
3172 * | 3317 * |
3173 * In many ways, undetectable objects behave as though they are not | 3318 * In many ways, undetectable objects behave as though they are not |
3174 * there. They behave like 'undefined' in conditionals and when | 3319 * there. They behave like 'undefined' in conditionals and when |
3175 * printed. However, properties can be accessed and called as on | 3320 * printed. However, properties can be accessed and called as on |
3176 * normal objects. | 3321 * normal objects. |
3177 */ | 3322 */ |
3178 void MarkAsUndetectable(); | 3323 void MarkAsUndetectable(); |
(...skipping 2269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5448 template <class T> | 5593 template <class T> |
5449 uint16_t Persistent<T>::WrapperClassId(Isolate* isolate) const { | 5594 uint16_t Persistent<T>::WrapperClassId(Isolate* isolate) const { |
5450 typedef internal::Internals I; | 5595 typedef internal::Internals I; |
5451 if (this->IsEmpty()) return 0; | 5596 if (this->IsEmpty()) return 0; |
5452 if (!I::IsInitialized(isolate)) return 0; | 5597 if (!I::IsInitialized(isolate)) return 0; |
5453 internal::Object** obj = reinterpret_cast<internal::Object**>(this->val_); | 5598 internal::Object** obj = reinterpret_cast<internal::Object**>(this->val_); |
5454 uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset; | 5599 uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset; |
5455 return *reinterpret_cast<uint16_t*>(addr); | 5600 return *reinterpret_cast<uint16_t*>(addr); |
5456 } | 5601 } |
5457 | 5602 |
5458 Arguments::Arguments(internal::Object** implicit_args, | 5603 template<typename T> |
5459 internal::Object** values, int length, | 5604 ReturnValue<T>::ReturnValue(internal::Object** slot) : value_(slot) {} |
5460 bool is_construct_call) | 5605 |
| 5606 template<typename T> |
| 5607 void ReturnValue<T>::Set(const Persistent<T>& handle) { |
| 5608 *value_ = *reinterpret_cast<internal::Object**>(*handle); |
| 5609 } |
| 5610 |
| 5611 template<typename T> |
| 5612 void ReturnValue<T>::Set(const Handle<T> handle) { |
| 5613 *value_ = *reinterpret_cast<internal::Object**>(*handle); |
| 5614 } |
| 5615 |
| 5616 template<typename T> |
| 5617 FunctionCallbackInfo<T>::FunctionCallbackInfo(internal::Object** implicit_args, |
| 5618 internal::Object** values, |
| 5619 int length, |
| 5620 bool is_construct_call) |
5461 : implicit_args_(implicit_args), | 5621 : implicit_args_(implicit_args), |
5462 values_(values), | 5622 values_(values), |
5463 length_(length), | 5623 length_(length), |
5464 is_construct_call_(is_construct_call) { } | 5624 is_construct_call_(is_construct_call) { } |
5465 | 5625 |
5466 | 5626 |
5467 Local<Value> Arguments::operator[](int i) const { | 5627 Arguments::Arguments(internal::Object** args, |
| 5628 internal::Object** values, |
| 5629 int length, |
| 5630 bool is_construct_call) |
| 5631 : FunctionCallbackInfo<Value>(args, values, length, is_construct_call) { } |
| 5632 |
| 5633 |
| 5634 template<typename T> |
| 5635 Local<Value> FunctionCallbackInfo<T>::operator[](int i) const { |
5468 if (i < 0 || length_ <= i) return Local<Value>(*Undefined()); | 5636 if (i < 0 || length_ <= i) return Local<Value>(*Undefined()); |
5469 return Local<Value>(reinterpret_cast<Value*>(values_ - i)); | 5637 return Local<Value>(reinterpret_cast<Value*>(values_ - i)); |
5470 } | 5638 } |
5471 | 5639 |
5472 | 5640 |
5473 Local<Function> Arguments::Callee() const { | 5641 template<typename T> |
| 5642 Local<Function> FunctionCallbackInfo<T>::Callee() const { |
5474 return Local<Function>(reinterpret_cast<Function*>( | 5643 return Local<Function>(reinterpret_cast<Function*>( |
5475 &implicit_args_[kCalleeIndex])); | 5644 &implicit_args_[kCalleeIndex])); |
5476 } | 5645 } |
5477 | 5646 |
5478 | 5647 |
5479 Local<Object> Arguments::This() const { | 5648 template<typename T> |
| 5649 Local<Object> FunctionCallbackInfo<T>::This() const { |
5480 return Local<Object>(reinterpret_cast<Object*>(values_ + 1)); | 5650 return Local<Object>(reinterpret_cast<Object*>(values_ + 1)); |
5481 } | 5651 } |
5482 | 5652 |
5483 | 5653 |
5484 Local<Object> Arguments::Holder() const { | 5654 template<typename T> |
| 5655 Local<Object> FunctionCallbackInfo<T>::Holder() const { |
5485 return Local<Object>(reinterpret_cast<Object*>( | 5656 return Local<Object>(reinterpret_cast<Object*>( |
5486 &implicit_args_[kHolderIndex])); | 5657 &implicit_args_[kHolderIndex])); |
5487 } | 5658 } |
5488 | 5659 |
5489 | 5660 |
5490 Local<Value> Arguments::Data() const { | 5661 template<typename T> |
| 5662 Local<Value> FunctionCallbackInfo<T>::Data() const { |
5491 return Local<Value>(reinterpret_cast<Value*>(&implicit_args_[kDataIndex])); | 5663 return Local<Value>(reinterpret_cast<Value*>(&implicit_args_[kDataIndex])); |
5492 } | 5664 } |
5493 | 5665 |
5494 | 5666 |
5495 Isolate* Arguments::GetIsolate() const { | 5667 template<typename T> |
| 5668 Isolate* FunctionCallbackInfo<T>::GetIsolate() const { |
5496 return *reinterpret_cast<Isolate**>(&implicit_args_[kIsolateIndex]); | 5669 return *reinterpret_cast<Isolate**>(&implicit_args_[kIsolateIndex]); |
5497 } | 5670 } |
5498 | 5671 |
5499 | 5672 |
5500 bool Arguments::IsConstructCall() const { | 5673 template<typename T> |
| 5674 ReturnValue<T> FunctionCallbackInfo<T>::GetReturnValue() const { |
| 5675 return ReturnValue<T>(&implicit_args_[kReturnValueIndex]); |
| 5676 } |
| 5677 |
| 5678 |
| 5679 template<typename T> |
| 5680 bool FunctionCallbackInfo<T>::IsConstructCall() const { |
5501 return is_construct_call_; | 5681 return is_construct_call_; |
5502 } | 5682 } |
5503 | 5683 |
5504 | 5684 |
5505 int Arguments::Length() const { | 5685 template<typename T> |
| 5686 int FunctionCallbackInfo<T>::Length() const { |
5506 return length_; | 5687 return length_; |
5507 } | 5688 } |
5508 | 5689 |
5509 | 5690 |
5510 template <class T> | 5691 template <class T> |
5511 Local<T> HandleScope::Close(Handle<T> value) { | 5692 Local<T> HandleScope::Close(Handle<T> value) { |
5512 internal::Object** before = reinterpret_cast<internal::Object**>(*value); | 5693 internal::Object** before = reinterpret_cast<internal::Object**>(*value); |
5513 internal::Object** after = RawClose(before); | 5694 internal::Object** after = RawClose(before); |
5514 return Local<T>(reinterpret_cast<T*>(after)); | 5695 return Local<T>(reinterpret_cast<T*>(after)); |
5515 } | 5696 } |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5884 | 6065 |
5885 | 6066 |
5886 External* External::Cast(v8::Value* value) { | 6067 External* External::Cast(v8::Value* value) { |
5887 #ifdef V8_ENABLE_CHECKS | 6068 #ifdef V8_ENABLE_CHECKS |
5888 CheckCast(value); | 6069 CheckCast(value); |
5889 #endif | 6070 #endif |
5890 return static_cast<External*>(value); | 6071 return static_cast<External*>(value); |
5891 } | 6072 } |
5892 | 6073 |
5893 | 6074 |
5894 Isolate* AccessorInfo::GetIsolate() const { | 6075 template<typename T> |
5895 return *reinterpret_cast<Isolate**>(&args_[-3]); | 6076 Isolate* PropertyCallbackInfo<T>::GetIsolate() const { |
| 6077 return *reinterpret_cast<Isolate**>(&args_[kIsolateIndex]); |
5896 } | 6078 } |
5897 | 6079 |
5898 | 6080 |
5899 Local<Value> AccessorInfo::Data() const { | 6081 template<typename T> |
5900 return Local<Value>(reinterpret_cast<Value*>(&args_[-2])); | 6082 Local<Value> PropertyCallbackInfo<T>::Data() const { |
| 6083 return Local<Value>(reinterpret_cast<Value*>(&args_[kDataIndex])); |
5901 } | 6084 } |
5902 | 6085 |
5903 | 6086 |
5904 Local<Object> AccessorInfo::This() const { | 6087 template<typename T> |
5905 return Local<Object>(reinterpret_cast<Object*>(&args_[0])); | 6088 Local<Object> PropertyCallbackInfo<T>::This() const { |
| 6089 return Local<Object>(reinterpret_cast<Object*>(&args_[kThisIndex])); |
5906 } | 6090 } |
5907 | 6091 |
5908 | 6092 |
5909 Local<Object> AccessorInfo::Holder() const { | 6093 template<typename T> |
5910 return Local<Object>(reinterpret_cast<Object*>(&args_[-1])); | 6094 Local<Object> PropertyCallbackInfo<T>::Holder() const { |
| 6095 return Local<Object>(reinterpret_cast<Object*>(&args_[kHolderIndex])); |
5911 } | 6096 } |
5912 | 6097 |
5913 | 6098 |
| 6099 template<typename T> |
| 6100 ReturnValue<T> PropertyCallbackInfo<T>::GetReturnValue() const { |
| 6101 return ReturnValue<T>(&args_[kReturnValueIndex]); |
| 6102 } |
| 6103 |
| 6104 |
5914 Handle<Primitive> Undefined(Isolate* isolate) { | 6105 Handle<Primitive> Undefined(Isolate* isolate) { |
5915 typedef internal::Object* S; | 6106 typedef internal::Object* S; |
5916 typedef internal::Internals I; | 6107 typedef internal::Internals I; |
5917 if (!I::IsInitialized(isolate)) return Undefined(); | 6108 if (!I::IsInitialized(isolate)) return Undefined(); |
5918 S* slot = I::GetRoot(isolate, I::kUndefinedValueRootIndex); | 6109 S* slot = I::GetRoot(isolate, I::kUndefinedValueRootIndex); |
5919 return Handle<Primitive>(reinterpret_cast<Primitive*>(slot)); | 6110 return Handle<Primitive>(reinterpret_cast<Primitive*>(slot)); |
5920 } | 6111 } |
5921 | 6112 |
5922 | 6113 |
5923 Handle<Primitive> Null(Isolate* isolate) { | 6114 Handle<Primitive> Null(Isolate* isolate) { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5994 | 6185 |
5995 | 6186 |
5996 } // namespace v8 | 6187 } // namespace v8 |
5997 | 6188 |
5998 | 6189 |
5999 #undef V8EXPORT | 6190 #undef V8EXPORT |
6000 #undef TYPE_CHECK | 6191 #undef TYPE_CHECK |
6001 | 6192 |
6002 | 6193 |
6003 #endif // V8_H_ | 6194 #endif // V8_H_ |
OLD | NEW |