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

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/ArrayValue.h

Issue 2272313003: binding: Makes ExceptionState STACK_ALLOCATED(). (Closed)
Patch Set: . Created 4 years, 3 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the 11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 12 * documentation and/or other materials provided with the distribution.
13 * 13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #ifndef ArrayValue_h 26 #ifndef ArrayValue_h
27 #define ArrayValue_h 27 #define ArrayValue_h
28 28
29 #include "bindings/core/v8/ExceptionState.h"
30 #include "core/CoreExport.h" 29 #include "core/CoreExport.h"
30 #include "wtf/Allocator.h"
31 #include "wtf/Assertions.h" 31 #include "wtf/Assertions.h"
32 #include <v8.h> 32 #include <v8.h>
33 33
34 namespace blink { 34 namespace blink {
35 35
36 class Dictionary; 36 class Dictionary;
37 37
38 class CORE_EXPORT ArrayValue { 38 class CORE_EXPORT ArrayValue final {
39 STACK_ALLOCATED();
39 public: 40 public:
40 ArrayValue() : m_isolate(0) { } 41 ArrayValue() : m_isolate(nullptr) { }
41 explicit ArrayValue(const v8::Local<v8::Array>& array, v8::Isolate* isolate) 42 explicit ArrayValue(const v8::Local<v8::Array>& array, v8::Isolate* isolate)
peria 2016/08/25 15:31:18 This is not related to your change, but we don't n
Yuki 2016/08/30 06:09:07 Done.
42 : m_array(array) 43 : m_array(array)
43 , m_isolate(isolate) 44 , m_isolate(isolate)
44 { 45 {
45 ASSERT(m_isolate); 46 DCHECK(m_isolate);
46 } 47 }
47 ~ArrayValue() { }
48 48
49 ArrayValue& operator=(const ArrayValue&); 49 ArrayValue& operator=(const ArrayValue&);
50 50
51 bool isUndefinedOrNull() const; 51 bool isUndefinedOrNull() const;
52 52
53 bool length(size_t&) const; 53 bool length(size_t&) const;
54 bool get(size_t index, Dictionary&) const; 54 bool get(size_t index, Dictionary&) const;
55 55
56 private: 56 private:
57 // This object can only be used safely when stack allocated because of v8::L ocal.
58 static void* operator new(size_t);
59 static void* operator new[](size_t);
60 static void operator delete(void *);
61
62 v8::Local<v8::Array> m_array; 57 v8::Local<v8::Array> m_array;
63 v8::Isolate* m_isolate; 58 v8::Isolate* m_isolate;
64 // FIXME: ArrayValue constructor should take an exception state.
65 mutable NonThrowableExceptionState m_exceptionState;
66 }; 59 };
67 60
68 } // namespace blink 61 } // namespace blink
69 62
70 #endif // ArrayValue_h 63 #endif // ArrayValue_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698