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

Side by Side Diff: JavaScriptCore/runtime/JSString.h

Issue 28077: WebKit side of merge from r41149 to r41181. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/WebKit/
Patch Set: Created 11 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « JavaScriptCore/runtime/JSGlobalData.cpp ('k') | JavaScriptCore/runtime/Operations.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 /* 1 /*
2 * Copyright (C) 1999-2001 Harri Porten (porten@kde.org) 2 * Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
3 * Copyright (C) 2001 Peter Kelly (pmk@post.com) 3 * Copyright (C) 2001 Peter Kelly (pmk@post.com)
4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reser ved. 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reser ved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 JSString* jsNontrivialString(ExecState*, const char*); 53 JSString* jsNontrivialString(ExecState*, const char*);
54 54
55 // Should be used for strings that are owned by an object that will 55 // Should be used for strings that are owned by an object that will
56 // likely outlive the JSValue this makes, such as the parse tree or a 56 // likely outlive the JSValue this makes, such as the parse tree or a
57 // DOM object that contains a UString 57 // DOM object that contains a UString
58 JSString* jsOwnedString(JSGlobalData*, const UString&); 58 JSString* jsOwnedString(JSGlobalData*, const UString&);
59 JSString* jsOwnedString(ExecState*, const UString&); 59 JSString* jsOwnedString(ExecState*, const UString&);
60 60
61 class JSString : public JSCell { 61 class JSString : public JSCell {
62 friend class JIT; 62 friend class JIT;
63 friend class Interpreter; 63 friend class VPtrSet;
64 64
65 public: 65 public:
66 JSString(JSGlobalData* globalData, const UString& value) 66 JSString(JSGlobalData* globalData, const UString& value)
67 : JSCell(globalData->stringStructure.get()) 67 : JSCell(globalData->stringStructure.get())
68 , m_value(value) 68 , m_value(value)
69 { 69 {
70 Heap::heap(this)->reportExtraMemoryCost(value.cost()); 70 Heap::heap(this)->reportExtraMemoryCost(value.cost());
71 } 71 }
72 72
73 enum HasOtherOwnerType { HasOtherOwner }; 73 enum HasOtherOwnerType { HasOtherOwner };
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 ALWAYS_INLINE bool JSString::getStringPropertySlot(ExecState* exec, unsigned propertyName, PropertySlot& slot) 195 ALWAYS_INLINE bool JSString::getStringPropertySlot(ExecState* exec, unsigned propertyName, PropertySlot& slot)
196 { 196 {
197 if (propertyName < static_cast<unsigned>(m_value.size())) { 197 if (propertyName < static_cast<unsigned>(m_value.size())) {
198 slot.setValue(jsSingleCharacterSubstring(exec, m_value, propertyName )); 198 slot.setValue(jsSingleCharacterSubstring(exec, m_value, propertyName ));
199 return true; 199 return true;
200 } 200 }
201 201
202 return false; 202 return false;
203 } 203 }
204 204
205 inline bool isJSString(JSGlobalData* globalData, JSValuePtr v) { return v.is Cell() && v.asCell()->vptr() == globalData->jsStringVPtr; }
206
205 // --- JSValue inlines ---------------------------- 207 // --- JSValue inlines ----------------------------
206 208
207 inline JSString* JSValuePtr::toThisJSString(ExecState* exec) 209 inline JSString* JSValuePtr::toThisJSString(ExecState* exec)
208 { 210 {
209 return JSImmediate::isImmediate(asValue()) ? jsString(exec, JSImmediate: :toString(asValue())) : asCell()->toThisJSString(exec); 211 return JSImmediate::isImmediate(asValue()) ? jsString(exec, JSImmediate: :toString(asValue())) : asCell()->toThisJSString(exec);
210 } 212 }
211 213
212 } // namespace JSC 214 } // namespace JSC
213 215
214 #endif // JSString_h 216 #endif // JSString_h
215 217
216 218
217 219
OLDNEW
« no previous file with comments | « JavaScriptCore/runtime/JSGlobalData.cpp ('k') | JavaScriptCore/runtime/Operations.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698