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

Side by Side Diff: Source/bindings/v8/V8PerContextData.cpp

Issue 40433002: Make wrapperTypeInfo static member const in bindings classes (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 7 years, 2 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 | « Source/bindings/v8/V8PerContextData.h ('k') | Source/bindings/v8/V8PerIsolateData.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) 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 if (prototypeString.IsEmpty()) 82 if (prototypeString.IsEmpty())
83 return false; 83 return false;
84 84
85 V8_STORE_PRIMORDIAL(error, Error); 85 V8_STORE_PRIMORDIAL(error, Error);
86 86
87 return true; 87 return true;
88 } 88 }
89 89
90 #undef V8_STORE_PRIMORDIAL 90 #undef V8_STORE_PRIMORDIAL
91 91
92 v8::Local<v8::Object> V8PerContextData::createWrapperFromCacheSlowCase(WrapperTy peInfo* type) 92 v8::Local<v8::Object> V8PerContextData::createWrapperFromCacheSlowCase(const Wra pperTypeInfo* type)
93 { 93 {
94 ASSERT(!m_errorPrototype.isEmpty()); 94 ASSERT(!m_errorPrototype.isEmpty());
95 95
96 v8::Context::Scope scope(v8::Local<v8::Context>::New(m_isolate, m_context)); 96 v8::Context::Scope scope(v8::Local<v8::Context>::New(m_isolate, m_context));
97 v8::Local<v8::Function> function = constructorForType(type); 97 v8::Local<v8::Function> function = constructorForType(type);
98 v8::Local<v8::Object> instance = V8ObjectConstructor::newInstance(function); 98 v8::Local<v8::Object> instance = V8ObjectConstructor::newInstance(function);
99 if (!instance.IsEmpty()) { 99 if (!instance.IsEmpty()) {
100 m_wrapperBoilerplates.set(type, UnsafePersistent<v8::Object>(m_isolate, instance)); 100 m_wrapperBoilerplates.set(type, UnsafePersistent<v8::Object>(m_isolate, instance));
101 return instance->Clone(); 101 return instance->Clone();
102 } 102 }
103 return v8::Local<v8::Object>(); 103 return v8::Local<v8::Object>();
104 } 104 }
105 105
106 v8::Local<v8::Function> V8PerContextData::constructorForTypeSlowCase(WrapperType Info* type) 106 v8::Local<v8::Function> V8PerContextData::constructorForTypeSlowCase(const Wrapp erTypeInfo* type)
107 { 107 {
108 ASSERT(!m_errorPrototype.isEmpty()); 108 ASSERT(!m_errorPrototype.isEmpty());
109 109
110 v8::Context::Scope scope(v8::Local<v8::Context>::New(m_isolate, m_context)); 110 v8::Context::Scope scope(v8::Local<v8::Context>::New(m_isolate, m_context));
111 v8::Handle<v8::FunctionTemplate> functionTemplate = type->getTemplate(m_isol ate, worldType(m_isolate)); 111 v8::Handle<v8::FunctionTemplate> functionTemplate = type->getTemplate(m_isol ate, worldType(m_isolate));
112 // Getting the function might fail if we're running out of stack or memory. 112 // Getting the function might fail if we're running out of stack or memory.
113 v8::TryCatch tryCatch; 113 v8::TryCatch tryCatch;
114 v8::Local<v8::Function> function = functionTemplate->GetFunction(); 114 v8::Local<v8::Function> function = functionTemplate->GetFunction();
115 if (function.IsEmpty()) 115 if (function.IsEmpty())
116 return v8::Local<v8::Function>(); 116 return v8::Local<v8::Function>();
117 117
118 if (type->parentClass) { 118 if (type->parentClass) {
119 v8::Local<v8::Object> proto = constructorForType(const_cast<WrapperTypeI nfo*>(type->parentClass)); 119 v8::Local<v8::Object> proto = constructorForType(type->parentClass);
120 if (proto.IsEmpty()) 120 if (proto.IsEmpty())
121 return v8::Local<v8::Function>(); 121 return v8::Local<v8::Function>();
122 function->SetPrototype(proto); 122 function->SetPrototype(proto);
123 } 123 }
124 124
125 v8::Local<v8::Value> prototypeValue = function->Get(v8::String::NewSymbol("p rototype")); 125 v8::Local<v8::Value> prototypeValue = function->Get(v8::String::NewSymbol("p rototype"));
126 if (!prototypeValue.IsEmpty() && prototypeValue->IsObject()) { 126 if (!prototypeValue.IsEmpty() && prototypeValue->IsObject()) {
127 v8::Local<v8::Object> prototypeObject = v8::Local<v8::Object>::Cast(prot otypeValue); 127 v8::Local<v8::Object> prototypeObject = v8::Local<v8::Object>::Cast(prot otypeValue);
128 if (prototypeObject->InternalFieldCount() == v8PrototypeInternalFieldcou nt 128 if (prototypeObject->InternalFieldCount() == v8PrototypeInternalFieldcou nt
129 && type->wrapperTypePrototype == WrapperTypeObjectPrototype) 129 && type->wrapperTypePrototype == WrapperTypeObjectPrototype)
130 prototypeObject->SetAlignedPointerInInternalField(v8PrototypeTypeInd ex, type); 130 prototypeObject->SetAlignedPointerInInternalField(v8PrototypeTypeInd ex, const_cast<WrapperTypeInfo*>(type));
131 type->installPerContextEnabledPrototypeProperties(prototypeObject, m_iso late); 131 type->installPerContextEnabledPrototypeProperties(prototypeObject, m_iso late);
132 if (type->wrapperTypePrototype == WrapperTypeErrorPrototype) 132 if (type->wrapperTypePrototype == WrapperTypeErrorPrototype)
133 prototypeObject->SetPrototype(m_errorPrototype.newLocal(m_isolate)); 133 prototypeObject->SetPrototype(m_errorPrototype.newLocal(m_isolate));
134 } 134 }
135 135
136 m_constructorMap.set(type, UnsafePersistent<v8::Function>(m_isolate, functio n)); 136 m_constructorMap.set(type, UnsafePersistent<v8::Function>(m_isolate, functio n));
137 137
138 return function; 138 return function;
139 } 139 }
140 140
141 v8::Local<v8::Object> V8PerContextData::prototypeForType(WrapperTypeInfo* type) 141 v8::Local<v8::Object> V8PerContextData::prototypeForType(const WrapperTypeInfo* type)
142 { 142 {
143 v8::Local<v8::Object> constructor = constructorForType(type); 143 v8::Local<v8::Object> constructor = constructorForType(type);
144 if (constructor.IsEmpty()) 144 if (constructor.IsEmpty())
145 return v8::Local<v8::Object>(); 145 return v8::Local<v8::Object>();
146 return constructor->Get(v8String("prototype", m_isolate)).As<v8::Object>(); 146 return constructor->Get(v8String("prototype", m_isolate)).As<v8::Object>();
147 } 147 }
148 148
149 void V8PerContextData::addCustomElementBinding(CustomElementDefinition* definiti on, PassOwnPtr<CustomElementBinding> binding) 149 void V8PerContextData::addCustomElementBinding(CustomElementDefinition* definiti on, PassOwnPtr<CustomElementBinding> binding)
150 { 150 {
151 ASSERT(!m_customElementBindings->contains(definition)); 151 ASSERT(!m_customElementBindings->contains(definition));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 if (!data->IsString()) 212 if (!data->IsString())
213 return -1; 213 return -1;
214 v8::String::AsciiValue ascii(data); 214 v8::String::AsciiValue ascii(data);
215 char* comma = strnstr(*ascii, ",", ascii.length()); 215 char* comma = strnstr(*ascii, ",", ascii.length());
216 if (!comma) 216 if (!comma)
217 return -1; 217 return -1;
218 return atoi(comma + 1); 218 return atoi(comma + 1);
219 } 219 }
220 220
221 } // namespace WebCore 221 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/bindings/v8/V8PerContextData.h ('k') | Source/bindings/v8/V8PerIsolateData.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698