| 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 2206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2217 } | 2217 } |
| 2218 | 2218 |
| 2219 | 2219 |
| 2220 // --- S t a c k F r a m e --- | 2220 // --- S t a c k F r a m e --- |
| 2221 | 2221 |
| 2222 int StackFrame::GetLineNumber() const { | 2222 int StackFrame::GetLineNumber() const { |
| 2223 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2223 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2224 ENTER_V8(isolate); | 2224 ENTER_V8(isolate); |
| 2225 i::HandleScope scope(isolate); | 2225 i::HandleScope scope(isolate); |
| 2226 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2226 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2227 i::Handle<i::Object> line = GetProperty(self, "lineNumber"); | 2227 i::Handle<i::Object> line = GetProperty(self, "lineNumber").ToHandleChecked(); |
| 2228 if (!line->IsSmi()) { | 2228 if (!line->IsSmi()) { |
| 2229 return Message::kNoLineNumberInfo; | 2229 return Message::kNoLineNumberInfo; |
| 2230 } | 2230 } |
| 2231 return i::Smi::cast(*line)->value(); | 2231 return i::Smi::cast(*line)->value(); |
| 2232 } | 2232 } |
| 2233 | 2233 |
| 2234 | 2234 |
| 2235 int StackFrame::GetColumn() const { | 2235 int StackFrame::GetColumn() const { |
| 2236 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2236 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2237 ENTER_V8(isolate); | 2237 ENTER_V8(isolate); |
| 2238 i::HandleScope scope(isolate); | 2238 i::HandleScope scope(isolate); |
| 2239 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2239 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2240 i::Handle<i::Object> column = GetProperty(self, "column"); | 2240 i::Handle<i::Object> column = GetProperty(self, "column").ToHandleChecked(); |
| 2241 if (!column->IsSmi()) { | 2241 if (!column->IsSmi()) { |
| 2242 return Message::kNoColumnInfo; | 2242 return Message::kNoColumnInfo; |
| 2243 } | 2243 } |
| 2244 return i::Smi::cast(*column)->value(); | 2244 return i::Smi::cast(*column)->value(); |
| 2245 } | 2245 } |
| 2246 | 2246 |
| 2247 | 2247 |
| 2248 int StackFrame::GetScriptId() const { | 2248 int StackFrame::GetScriptId() const { |
| 2249 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2249 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2250 ENTER_V8(isolate); | 2250 ENTER_V8(isolate); |
| 2251 i::HandleScope scope(isolate); | 2251 i::HandleScope scope(isolate); |
| 2252 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2252 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2253 i::Handle<i::Object> scriptId = GetProperty(self, "scriptId"); | 2253 i::Handle<i::Object> scriptId = |
| 2254 GetProperty(self, "scriptId").ToHandleChecked(); |
| 2254 if (!scriptId->IsSmi()) { | 2255 if (!scriptId->IsSmi()) { |
| 2255 return Message::kNoScriptIdInfo; | 2256 return Message::kNoScriptIdInfo; |
| 2256 } | 2257 } |
| 2257 return i::Smi::cast(*scriptId)->value(); | 2258 return i::Smi::cast(*scriptId)->value(); |
| 2258 } | 2259 } |
| 2259 | 2260 |
| 2260 | 2261 |
| 2261 Local<String> StackFrame::GetScriptName() const { | 2262 Local<String> StackFrame::GetScriptName() const { |
| 2262 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2263 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2263 ENTER_V8(isolate); | 2264 ENTER_V8(isolate); |
| 2264 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); | 2265 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
| 2265 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2266 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2266 i::Handle<i::Object> name = GetProperty(self, "scriptName"); | 2267 i::Handle<i::Object> name = GetProperty(self, "scriptName").ToHandleChecked(); |
| 2267 if (!name->IsString()) { | 2268 if (!name->IsString()) { |
| 2268 return Local<String>(); | 2269 return Local<String>(); |
| 2269 } | 2270 } |
| 2270 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); | 2271 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); |
| 2271 } | 2272 } |
| 2272 | 2273 |
| 2273 | 2274 |
| 2274 Local<String> StackFrame::GetScriptNameOrSourceURL() const { | 2275 Local<String> StackFrame::GetScriptNameOrSourceURL() const { |
| 2275 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2276 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2276 ENTER_V8(isolate); | 2277 ENTER_V8(isolate); |
| 2277 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); | 2278 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
| 2278 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2279 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2279 i::Handle<i::Object> name = GetProperty(self, "scriptNameOrSourceURL"); | 2280 i::Handle<i::Object> name = |
| 2281 GetProperty(self, "scriptNameOrSourceURL").ToHandleChecked(); |
| 2280 if (!name->IsString()) { | 2282 if (!name->IsString()) { |
| 2281 return Local<String>(); | 2283 return Local<String>(); |
| 2282 } | 2284 } |
| 2283 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); | 2285 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); |
| 2284 } | 2286 } |
| 2285 | 2287 |
| 2286 | 2288 |
| 2287 Local<String> StackFrame::GetFunctionName() const { | 2289 Local<String> StackFrame::GetFunctionName() const { |
| 2288 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2290 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2289 ENTER_V8(isolate); | 2291 ENTER_V8(isolate); |
| 2290 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); | 2292 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
| 2291 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2293 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2292 i::Handle<i::Object> name = GetProperty(self, "functionName"); | 2294 i::Handle<i::Object> name = |
| 2295 GetProperty(self, "functionName").ToHandleChecked(); |
| 2293 if (!name->IsString()) { | 2296 if (!name->IsString()) { |
| 2294 return Local<String>(); | 2297 return Local<String>(); |
| 2295 } | 2298 } |
| 2296 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); | 2299 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); |
| 2297 } | 2300 } |
| 2298 | 2301 |
| 2299 | 2302 |
| 2300 bool StackFrame::IsEval() const { | 2303 bool StackFrame::IsEval() const { |
| 2301 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2304 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2302 ENTER_V8(isolate); | 2305 ENTER_V8(isolate); |
| 2303 i::HandleScope scope(isolate); | 2306 i::HandleScope scope(isolate); |
| 2304 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2307 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2305 i::Handle<i::Object> is_eval = GetProperty(self, "isEval"); | 2308 i::Handle<i::Object> is_eval = GetProperty(self, "isEval").ToHandleChecked(); |
| 2306 return is_eval->IsTrue(); | 2309 return is_eval->IsTrue(); |
| 2307 } | 2310 } |
| 2308 | 2311 |
| 2309 | 2312 |
| 2310 bool StackFrame::IsConstructor() const { | 2313 bool StackFrame::IsConstructor() const { |
| 2311 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2314 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 2312 ENTER_V8(isolate); | 2315 ENTER_V8(isolate); |
| 2313 i::HandleScope scope(isolate); | 2316 i::HandleScope scope(isolate); |
| 2314 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2317 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 2315 i::Handle<i::Object> is_constructor = GetProperty(self, "isConstructor"); | 2318 i::Handle<i::Object> is_constructor = |
| 2319 GetProperty(self, "isConstructor").ToHandleChecked(); |
| 2316 return is_constructor->IsTrue(); | 2320 return is_constructor->IsTrue(); |
| 2317 } | 2321 } |
| 2318 | 2322 |
| 2319 | 2323 |
| 2320 // --- J S O N --- | 2324 // --- J S O N --- |
| 2321 | 2325 |
| 2322 Local<Value> JSON::Parse(Local<String> json_string) { | 2326 Local<Value> JSON::Parse(Local<String> json_string) { |
| 2323 i::Isolate* isolate = i::Isolate::Current(); | 2327 i::Isolate* isolate = i::Isolate::Current(); |
| 2324 EnsureInitializedForIsolate(isolate, "v8::JSON::Parse"); | 2328 EnsureInitializedForIsolate(isolate, "v8::JSON::Parse"); |
| 2325 ENTER_V8(isolate); | 2329 ENTER_V8(isolate); |
| (...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3140 } | 3144 } |
| 3141 | 3145 |
| 3142 | 3146 |
| 3143 Local<Value> v8::Object::Get(v8::Handle<Value> key) { | 3147 Local<Value> v8::Object::Get(v8::Handle<Value> key) { |
| 3144 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3148 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3145 ON_BAILOUT(isolate, "v8::Object::Get()", return Local<v8::Value>()); | 3149 ON_BAILOUT(isolate, "v8::Object::Get()", return Local<v8::Value>()); |
| 3146 ENTER_V8(isolate); | 3150 ENTER_V8(isolate); |
| 3147 i::Handle<i::Object> self = Utils::OpenHandle(this); | 3151 i::Handle<i::Object> self = Utils::OpenHandle(this); |
| 3148 i::Handle<i::Object> key_obj = Utils::OpenHandle(*key); | 3152 i::Handle<i::Object> key_obj = Utils::OpenHandle(*key); |
| 3149 EXCEPTION_PREAMBLE(isolate); | 3153 EXCEPTION_PREAMBLE(isolate); |
| 3150 i::Handle<i::Object> result = | 3154 i::Handle<i::Object> result; |
| 3151 i::Runtime::GetObjectProperty(isolate, self, key_obj); | 3155 has_pending_exception = |
| 3152 has_pending_exception = result.is_null(); | 3156 !i::Runtime::GetObjectProperty(isolate, self, key_obj).ToHandle(&result); |
| 3153 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); | 3157 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); |
| 3154 return Utils::ToLocal(result); | 3158 return Utils::ToLocal(result); |
| 3155 } | 3159 } |
| 3156 | 3160 |
| 3157 | 3161 |
| 3158 Local<Value> v8::Object::Get(uint32_t index) { | 3162 Local<Value> v8::Object::Get(uint32_t index) { |
| 3159 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3163 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3160 ON_BAILOUT(isolate, "v8::Object::Get()", return Local<v8::Value>()); | 3164 ON_BAILOUT(isolate, "v8::Object::Get()", return Local<v8::Value>()); |
| 3161 ENTER_V8(isolate); | 3165 ENTER_V8(isolate); |
| 3162 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3166 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 3163 EXCEPTION_PREAMBLE(isolate); | 3167 EXCEPTION_PREAMBLE(isolate); |
| 3164 i::Handle<i::Object> result = i::Object::GetElement(isolate, self, index); | 3168 i::Handle<i::Object> result; |
| 3165 has_pending_exception = result.is_null(); | 3169 has_pending_exception = |
| 3170 !i::Object::GetElement(isolate, self, index).ToHandle(&result); |
| 3166 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); | 3171 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); |
| 3167 return Utils::ToLocal(result); | 3172 return Utils::ToLocal(result); |
| 3168 } | 3173 } |
| 3169 | 3174 |
| 3170 | 3175 |
| 3171 Local<Value> v8::Object::GetPrivate(v8::Handle<Private> key) { | 3176 Local<Value> v8::Object::GetPrivate(v8::Handle<Private> key) { |
| 3172 return Get(v8::Handle<Value>(reinterpret_cast<Value*>(*key))); | 3177 return Get(v8::Handle<Value>(reinterpret_cast<Value*>(*key))); |
| 3173 } | 3178 } |
| 3174 | 3179 |
| 3175 | 3180 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3240 } | 3245 } |
| 3241 | 3246 |
| 3242 | 3247 |
| 3243 Local<Array> v8::Object::GetPropertyNames() { | 3248 Local<Array> v8::Object::GetPropertyNames() { |
| 3244 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3249 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3245 ON_BAILOUT(isolate, "v8::Object::GetPropertyNames()", | 3250 ON_BAILOUT(isolate, "v8::Object::GetPropertyNames()", |
| 3246 return Local<v8::Array>()); | 3251 return Local<v8::Array>()); |
| 3247 ENTER_V8(isolate); | 3252 ENTER_V8(isolate); |
| 3248 i::HandleScope scope(isolate); | 3253 i::HandleScope scope(isolate); |
| 3249 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3254 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 3250 bool threw = false; | 3255 EXCEPTION_PREAMBLE(isolate); |
| 3251 i::Handle<i::FixedArray> value = | 3256 i::Handle<i::FixedArray> value; |
| 3252 i::GetKeysInFixedArrayFor(self, i::INCLUDE_PROTOS, &threw); | 3257 has_pending_exception = |
| 3253 if (threw) return Local<v8::Array>(); | 3258 !i::GetKeysInFixedArrayFor(self, i::INCLUDE_PROTOS).ToHandle(&value); |
| 3259 EXCEPTION_BAILOUT_CHECK(isolate, Local<v8::Array>()); |
| 3254 // Because we use caching to speed up enumeration it is important | 3260 // Because we use caching to speed up enumeration it is important |
| 3255 // to never change the result of the basic enumeration function so | 3261 // to never change the result of the basic enumeration function so |
| 3256 // we clone the result. | 3262 // we clone the result. |
| 3257 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value); | 3263 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value); |
| 3258 i::Handle<i::JSArray> result = | 3264 i::Handle<i::JSArray> result = |
| 3259 isolate->factory()->NewJSArrayWithElements(elms); | 3265 isolate->factory()->NewJSArrayWithElements(elms); |
| 3260 return Utils::ToLocal(scope.CloseAndEscape(result)); | 3266 return Utils::ToLocal(scope.CloseAndEscape(result)); |
| 3261 } | 3267 } |
| 3262 | 3268 |
| 3263 | 3269 |
| 3264 Local<Array> v8::Object::GetOwnPropertyNames() { | 3270 Local<Array> v8::Object::GetOwnPropertyNames() { |
| 3265 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3271 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3266 ON_BAILOUT(isolate, "v8::Object::GetOwnPropertyNames()", | 3272 ON_BAILOUT(isolate, "v8::Object::GetOwnPropertyNames()", |
| 3267 return Local<v8::Array>()); | 3273 return Local<v8::Array>()); |
| 3268 ENTER_V8(isolate); | 3274 ENTER_V8(isolate); |
| 3269 i::HandleScope scope(isolate); | 3275 i::HandleScope scope(isolate); |
| 3270 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3276 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 3271 bool threw = false; | 3277 EXCEPTION_PREAMBLE(isolate); |
| 3272 i::Handle<i::FixedArray> value = | 3278 i::Handle<i::FixedArray> value; |
| 3273 i::GetKeysInFixedArrayFor(self, i::LOCAL_ONLY, &threw); | 3279 has_pending_exception = |
| 3274 if (threw) return Local<v8::Array>(); | 3280 !i::GetKeysInFixedArrayFor(self, i::LOCAL_ONLY).ToHandle(&value); |
| 3281 EXCEPTION_BAILOUT_CHECK(isolate, Local<v8::Array>()); |
| 3275 // Because we use caching to speed up enumeration it is important | 3282 // Because we use caching to speed up enumeration it is important |
| 3276 // to never change the result of the basic enumeration function so | 3283 // to never change the result of the basic enumeration function so |
| 3277 // we clone the result. | 3284 // we clone the result. |
| 3278 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value); | 3285 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value); |
| 3279 i::Handle<i::JSArray> result = | 3286 i::Handle<i::JSArray> result = |
| 3280 isolate->factory()->NewJSArrayWithElements(elms); | 3287 isolate->factory()->NewJSArrayWithElements(elms); |
| 3281 return Utils::ToLocal(scope.CloseAndEscape(result)); | 3288 return Utils::ToLocal(scope.CloseAndEscape(result)); |
| 3282 } | 3289 } |
| 3283 | 3290 |
| 3284 | 3291 |
| (...skipping 2877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6162 } | 6169 } |
| 6163 | 6170 |
| 6164 | 6171 |
| 6165 Local<Symbol> v8::Symbol::For(Isolate* isolate, Local<String> name) { | 6172 Local<Symbol> v8::Symbol::For(Isolate* isolate, Local<String> name) { |
| 6166 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6173 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6167 i::Handle<i::String> i_name = Utils::OpenHandle(*name); | 6174 i::Handle<i::String> i_name = Utils::OpenHandle(*name); |
| 6168 i::Handle<i::JSObject> registry = i_isolate->GetSymbolRegistry(); | 6175 i::Handle<i::JSObject> registry = i_isolate->GetSymbolRegistry(); |
| 6169 i::Handle<i::String> part = i_isolate->factory()->for_string(); | 6176 i::Handle<i::String> part = i_isolate->factory()->for_string(); |
| 6170 i::Handle<i::JSObject> symbols = | 6177 i::Handle<i::JSObject> symbols = |
| 6171 i::Handle<i::JSObject>::cast( | 6178 i::Handle<i::JSObject>::cast( |
| 6172 i::Object::GetPropertyOrElement(registry, part)); | 6179 i::Object::GetPropertyOrElement(registry, part).ToHandleChecked()); |
| 6173 i::Handle<i::Object> symbol = | 6180 i::Handle<i::Object> symbol = |
| 6174 i::Object::GetPropertyOrElement(symbols, i_name); | 6181 i::Object::GetPropertyOrElement(symbols, i_name).ToHandleChecked(); |
| 6175 if (!symbol->IsSymbol()) { | 6182 if (!symbol->IsSymbol()) { |
| 6176 ASSERT(symbol->IsUndefined()); | 6183 ASSERT(symbol->IsUndefined()); |
| 6177 symbol = i_isolate->factory()->NewSymbol(); | 6184 symbol = i_isolate->factory()->NewSymbol(); |
| 6178 i::Handle<i::Symbol>::cast(symbol)->set_name(*i_name); | 6185 i::Handle<i::Symbol>::cast(symbol)->set_name(*i_name); |
| 6179 i::JSObject::SetProperty( | 6186 i::JSObject::SetProperty( |
| 6180 symbols, i_name, symbol, NONE, i::STRICT).Assert(); | 6187 symbols, i_name, symbol, NONE, i::STRICT).Assert(); |
| 6181 } | 6188 } |
| 6182 return Utils::ToLocal(i::Handle<i::Symbol>::cast(symbol)); | 6189 return Utils::ToLocal(i::Handle<i::Symbol>::cast(symbol)); |
| 6183 } | 6190 } |
| 6184 | 6191 |
| 6185 | 6192 |
| 6186 Local<Symbol> v8::Symbol::ForApi(Isolate* isolate, Local<String> name) { | 6193 Local<Symbol> v8::Symbol::ForApi(Isolate* isolate, Local<String> name) { |
| 6187 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6194 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6188 i::Handle<i::String> i_name = Utils::OpenHandle(*name); | 6195 i::Handle<i::String> i_name = Utils::OpenHandle(*name); |
| 6189 i::Handle<i::JSObject> registry = i_isolate->GetSymbolRegistry(); | 6196 i::Handle<i::JSObject> registry = i_isolate->GetSymbolRegistry(); |
| 6190 i::Handle<i::String> part = i_isolate->factory()->for_api_string(); | 6197 i::Handle<i::String> part = i_isolate->factory()->for_api_string(); |
| 6191 i::Handle<i::JSObject> symbols = | 6198 i::Handle<i::JSObject> symbols = |
| 6192 i::Handle<i::JSObject>::cast( | 6199 i::Handle<i::JSObject>::cast( |
| 6193 i::Object::GetPropertyOrElement(registry, part)); | 6200 i::Object::GetPropertyOrElement(registry, part).ToHandleChecked()); |
| 6194 i::Handle<i::Object> symbol = | 6201 i::Handle<i::Object> symbol = |
| 6195 i::Object::GetPropertyOrElement(symbols, i_name); | 6202 i::Object::GetPropertyOrElement(symbols, i_name).ToHandleChecked(); |
| 6196 if (!symbol->IsSymbol()) { | 6203 if (!symbol->IsSymbol()) { |
| 6197 ASSERT(symbol->IsUndefined()); | 6204 ASSERT(symbol->IsUndefined()); |
| 6198 symbol = i_isolate->factory()->NewSymbol(); | 6205 symbol = i_isolate->factory()->NewSymbol(); |
| 6199 i::Handle<i::Symbol>::cast(symbol)->set_name(*i_name); | 6206 i::Handle<i::Symbol>::cast(symbol)->set_name(*i_name); |
| 6200 i::JSObject::SetProperty( | 6207 i::JSObject::SetProperty( |
| 6201 symbols, i_name, symbol, NONE, i::STRICT).Assert(); | 6208 symbols, i_name, symbol, NONE, i::STRICT).Assert(); |
| 6202 } | 6209 } |
| 6203 return Utils::ToLocal(i::Handle<i::Symbol>::cast(symbol)); | 6210 return Utils::ToLocal(i::Handle<i::Symbol>::cast(symbol)); |
| 6204 } | 6211 } |
| 6205 | 6212 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 6216 } | 6223 } |
| 6217 | 6224 |
| 6218 | 6225 |
| 6219 Local<Private> v8::Private::ForApi(Isolate* isolate, Local<String> name) { | 6226 Local<Private> v8::Private::ForApi(Isolate* isolate, Local<String> name) { |
| 6220 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6227 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6221 i::Handle<i::String> i_name = Utils::OpenHandle(*name); | 6228 i::Handle<i::String> i_name = Utils::OpenHandle(*name); |
| 6222 i::Handle<i::JSObject> registry = i_isolate->GetSymbolRegistry(); | 6229 i::Handle<i::JSObject> registry = i_isolate->GetSymbolRegistry(); |
| 6223 i::Handle<i::String> part = i_isolate->factory()->private_api_string(); | 6230 i::Handle<i::String> part = i_isolate->factory()->private_api_string(); |
| 6224 i::Handle<i::JSObject> privates = | 6231 i::Handle<i::JSObject> privates = |
| 6225 i::Handle<i::JSObject>::cast( | 6232 i::Handle<i::JSObject>::cast( |
| 6226 i::Object::GetPropertyOrElement(registry, part)); | 6233 i::Object::GetPropertyOrElement(registry, part).ToHandleChecked()); |
| 6227 i::Handle<i::Object> symbol = | 6234 i::Handle<i::Object> symbol = |
| 6228 i::Object::GetPropertyOrElement(privates, i_name); | 6235 i::Object::GetPropertyOrElement(privates, i_name).ToHandleChecked(); |
| 6229 if (!symbol->IsSymbol()) { | 6236 if (!symbol->IsSymbol()) { |
| 6230 ASSERT(symbol->IsUndefined()); | 6237 ASSERT(symbol->IsUndefined()); |
| 6231 symbol = i_isolate->factory()->NewPrivateSymbol(); | 6238 symbol = i_isolate->factory()->NewPrivateSymbol(); |
| 6232 i::Handle<i::Symbol>::cast(symbol)->set_name(*i_name); | 6239 i::Handle<i::Symbol>::cast(symbol)->set_name(*i_name); |
| 6233 i::JSObject::SetProperty( | 6240 i::JSObject::SetProperty( |
| 6234 privates, i_name, symbol, NONE, i::STRICT).Assert(); | 6241 privates, i_name, symbol, NONE, i::STRICT).Assert(); |
| 6235 } | 6242 } |
| 6236 Local<Symbol> result = Utils::ToLocal(i::Handle<i::Symbol>::cast(symbol)); | 6243 Local<Symbol> result = Utils::ToLocal(i::Handle<i::Symbol>::cast(symbol)); |
| 6237 return v8::Handle<Private>(reinterpret_cast<Private*>(*result)); | 6244 return v8::Handle<Private>(reinterpret_cast<Private*>(*result)); |
| 6238 } | 6245 } |
| (...skipping 1445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7684 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 7691 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
| 7685 Address callback_address = | 7692 Address callback_address = |
| 7686 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 7693 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 7687 VMState<EXTERNAL> state(isolate); | 7694 VMState<EXTERNAL> state(isolate); |
| 7688 ExternalCallbackScope call_scope(isolate, callback_address); | 7695 ExternalCallbackScope call_scope(isolate, callback_address); |
| 7689 callback(info); | 7696 callback(info); |
| 7690 } | 7697 } |
| 7691 | 7698 |
| 7692 | 7699 |
| 7693 } } // namespace v8::internal | 7700 } } // namespace v8::internal |
| OLD | NEW |