OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 m_atomicString = AtomicString(m_plainString); | 84 m_atomicString = AtomicString(m_plainString); |
85 ASSERT(!m_atomicString.isNull()); | 85 ASSERT(!m_atomicString.isNull()); |
86 if (m_plainString.impl() != m_atomicString.impl()) | 86 if (m_plainString.impl() != m_atomicString.impl()) |
87 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory( | 87 v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory( |
88 m_atomicString.charactersSizeInBytes()); | 88 m_atomicString.charactersSizeInBytes()); |
89 } | 89 } |
90 return m_atomicString; | 90 return m_atomicString; |
91 } | 91 } |
92 | 92 |
93 protected: | 93 protected: |
94 // A shallow copy of the string. Keeps the string buffer alive until the V8 en
gine garbage collects it. | 94 // A shallow copy of the string. Keeps the string buffer alive until the V8 |
| 95 // engine garbage collects it. |
95 String m_plainString; | 96 String m_plainString; |
96 // If this string is atomic or has been made atomic earlier the | 97 // If this string is atomic or has been made atomic earlier the |
97 // atomic string is held here. In the case where the string starts | 98 // atomic string is held here. In the case where the string starts |
98 // off non-atomic and becomes atomic later it is necessary to keep | 99 // off non-atomic and becomes atomic later it is necessary to keep |
99 // the original string alive because v8 may keep derived pointers | 100 // the original string alive because v8 may keep derived pointers |
100 // into that string. | 101 // into that string. |
101 AtomicString m_atomicString; | 102 AtomicString m_atomicString; |
102 | 103 |
103 private: | 104 private: |
104 #if ENABLE(ASSERT) | 105 #if ENABLE(ASSERT) |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 } | 198 } |
198 | 199 |
199 bool prepare(ExceptionState& exceptionState) { | 200 bool prepare(ExceptionState& exceptionState) { |
200 if (prepareFast()) | 201 if (prepareFast()) |
201 return true; | 202 return true; |
202 | 203 |
203 // TODO(bashi): Pass an isolate to this function and remove | 204 // TODO(bashi): Pass an isolate to this function and remove |
204 // v8::Isolate::GetCurrent(). | 205 // v8::Isolate::GetCurrent(). |
205 v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 206 v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
206 v8::TryCatch block(isolate); | 207 v8::TryCatch block(isolate); |
207 // Handle the case where an exception is thrown as part of invoking toString
on the object. | 208 // Handle the case where an exception is thrown as part of invoking toString |
| 209 // on the object. |
208 if (!m_v8Object->ToString(isolate->GetCurrentContext()) | 210 if (!m_v8Object->ToString(isolate->GetCurrentContext()) |
209 .ToLocal(&m_v8Object)) { | 211 .ToLocal(&m_v8Object)) { |
210 exceptionState.rethrowV8Exception(block.Exception()); | 212 exceptionState.rethrowV8Exception(block.Exception()); |
211 return false; | 213 return false; |
212 } | 214 } |
213 return true; | 215 return true; |
214 } | 216 } |
215 | 217 |
216 operator String() const { return toString<String>(); } | 218 operator String() const { return toString<String>(); } |
217 operator AtomicString() const { return toString<AtomicString>(); } | 219 operator AtomicString() const { return toString<AtomicString>(); } |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 | 302 |
301 template <> | 303 template <> |
302 inline String | 304 inline String |
303 V8StringResource<TreatNullAndUndefinedAsNullString>::fallbackString() const { | 305 V8StringResource<TreatNullAndUndefinedAsNullString>::fallbackString() const { |
304 return String(); | 306 return String(); |
305 } | 307 } |
306 | 308 |
307 } // namespace blink | 309 } // namespace blink |
308 | 310 |
309 #endif // V8StringResource_h | 311 #endif // V8StringResource_h |
OLD | NEW |