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 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
659 ASSERT(isolate == i::Isolate::Current()); | 659 ASSERT(isolate == i::Isolate::Current()); |
660 LOG_API(isolate, "DisposeGlobal"); | 660 LOG_API(isolate, "DisposeGlobal"); |
661 if (!isolate->IsInitialized()) return; | 661 if (!isolate->IsInitialized()) return; |
662 isolate->global_handles()->Destroy(obj); | 662 isolate->global_handles()->Destroy(obj); |
663 } | 663 } |
664 | 664 |
665 // --- H a n d l e s --- | 665 // --- H a n d l e s --- |
666 | 666 |
667 | 667 |
668 HandleScope::HandleScope() { | 668 HandleScope::HandleScope() { |
669 i::Isolate* isolate = i::Isolate::Current(); | 669 Initialize(reinterpret_cast<Isolate*>(i::Isolate::Current())); |
670 API_ENTRY_CHECK(isolate, "HandleScope::HandleScope"); | 670 } |
| 671 |
| 672 |
| 673 HandleScope::HandleScope(Isolate* isolate) { |
| 674 Initialize(isolate); |
| 675 } |
| 676 |
| 677 |
| 678 void HandleScope::Initialize(Isolate* isolate) { |
| 679 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 680 API_ENTRY_CHECK(internal_isolate, "HandleScope::HandleScope"); |
671 v8::ImplementationUtilities::HandleScopeData* current = | 681 v8::ImplementationUtilities::HandleScopeData* current = |
672 isolate->handle_scope_data(); | 682 internal_isolate->handle_scope_data(); |
673 isolate_ = isolate; | 683 isolate_ = internal_isolate; |
674 prev_next_ = current->next; | 684 prev_next_ = current->next; |
675 prev_limit_ = current->limit; | 685 prev_limit_ = current->limit; |
676 is_closed_ = false; | 686 is_closed_ = false; |
677 current->level++; | 687 current->level++; |
678 } | 688 } |
679 | 689 |
680 | 690 |
681 HandleScope::~HandleScope() { | 691 HandleScope::~HandleScope() { |
682 if (!is_closed_) { | 692 if (!is_closed_) { |
683 Leave(); | 693 Leave(); |
684 } | 694 } |
685 } | 695 } |
686 | 696 |
687 | 697 |
688 void HandleScope::Leave() { | 698 void HandleScope::Leave() { |
689 ASSERT(isolate_ == i::Isolate::Current()); | |
690 v8::ImplementationUtilities::HandleScopeData* current = | 699 v8::ImplementationUtilities::HandleScopeData* current = |
691 isolate_->handle_scope_data(); | 700 isolate_->handle_scope_data(); |
692 current->level--; | 701 current->level--; |
693 ASSERT(current->level >= 0); | 702 ASSERT(current->level >= 0); |
694 current->next = prev_next_; | 703 current->next = prev_next_; |
695 if (current->limit != prev_limit_) { | 704 if (current->limit != prev_limit_) { |
696 current->limit = prev_limit_; | 705 current->limit = prev_limit_; |
697 i::HandleScope::DeleteExtensions(isolate_); | 706 i::HandleScope::DeleteExtensions(isolate_); |
698 } | 707 } |
699 | 708 |
(...skipping 1177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1877 can_continue_(true), | 1886 can_continue_(true), |
1878 capture_message_(true), | 1887 capture_message_(true), |
1879 rethrow_(false) { | 1888 rethrow_(false) { |
1880 isolate_->RegisterTryCatchHandler(this); | 1889 isolate_->RegisterTryCatchHandler(this); |
1881 } | 1890 } |
1882 | 1891 |
1883 | 1892 |
1884 v8::TryCatch::~TryCatch() { | 1893 v8::TryCatch::~TryCatch() { |
1885 ASSERT(isolate_ == i::Isolate::Current()); | 1894 ASSERT(isolate_ == i::Isolate::Current()); |
1886 if (rethrow_) { | 1895 if (rethrow_) { |
1887 v8::HandleScope scope; | 1896 v8::HandleScope scope(reinterpret_cast<Isolate*>(isolate_)); |
1888 v8::Local<v8::Value> exc = v8::Local<v8::Value>::New(Exception()); | 1897 v8::Local<v8::Value> exc = v8::Local<v8::Value>::New(Exception()); |
1889 isolate_->UnregisterTryCatchHandler(this); | 1898 isolate_->UnregisterTryCatchHandler(this); |
1890 v8::ThrowException(exc); | 1899 v8::ThrowException(exc); |
1891 } else { | 1900 } else { |
1892 isolate_->UnregisterTryCatchHandler(this); | 1901 isolate_->UnregisterTryCatchHandler(this); |
1893 } | 1902 } |
1894 } | 1903 } |
1895 | 1904 |
1896 | 1905 |
1897 bool v8::TryCatch::HasCaught() const { | 1906 bool v8::TryCatch::HasCaught() const { |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1969 } | 1978 } |
1970 | 1979 |
1971 | 1980 |
1972 // --- M e s s a g e --- | 1981 // --- M e s s a g e --- |
1973 | 1982 |
1974 | 1983 |
1975 Local<String> Message::Get() const { | 1984 Local<String> Message::Get() const { |
1976 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 1985 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
1977 ON_BAILOUT(isolate, "v8::Message::Get()", return Local<String>()); | 1986 ON_BAILOUT(isolate, "v8::Message::Get()", return Local<String>()); |
1978 ENTER_V8(isolate); | 1987 ENTER_V8(isolate); |
1979 HandleScope scope; | 1988 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
1980 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 1989 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
1981 i::Handle<i::String> raw_result = i::MessageHandler::GetMessage(isolate, obj); | 1990 i::Handle<i::String> raw_result = i::MessageHandler::GetMessage(isolate, obj); |
1982 Local<String> result = Utils::ToLocal(raw_result); | 1991 Local<String> result = Utils::ToLocal(raw_result); |
1983 return scope.Close(result); | 1992 return scope.Close(result); |
1984 } | 1993 } |
1985 | 1994 |
1986 | 1995 |
1987 v8::Handle<Value> Message::GetScriptResourceName() const { | 1996 v8::Handle<Value> Message::GetScriptResourceName() const { |
1988 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 1997 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
1989 if (IsDeadCheck(isolate, "v8::Message::GetScriptResourceName()")) { | 1998 if (IsDeadCheck(isolate, "v8::Message::GetScriptResourceName()")) { |
1990 return Local<String>(); | 1999 return Local<String>(); |
1991 } | 2000 } |
1992 ENTER_V8(isolate); | 2001 ENTER_V8(isolate); |
1993 HandleScope scope; | 2002 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
1994 i::Handle<i::JSMessageObject> message = | 2003 i::Handle<i::JSMessageObject> message = |
1995 i::Handle<i::JSMessageObject>::cast(Utils::OpenHandle(this)); | 2004 i::Handle<i::JSMessageObject>::cast(Utils::OpenHandle(this)); |
1996 // Return this.script.name. | 2005 // Return this.script.name. |
1997 i::Handle<i::JSValue> script = | 2006 i::Handle<i::JSValue> script = |
1998 i::Handle<i::JSValue>::cast(i::Handle<i::Object>(message->script(), | 2007 i::Handle<i::JSValue>::cast(i::Handle<i::Object>(message->script(), |
1999 isolate)); | 2008 isolate)); |
2000 i::Handle<i::Object> resource_name(i::Script::cast(script->value())->name(), | 2009 i::Handle<i::Object> resource_name(i::Script::cast(script->value())->name(), |
2001 isolate); | 2010 isolate); |
2002 return scope.Close(Utils::ToLocal(resource_name)); | 2011 return scope.Close(Utils::ToLocal(resource_name)); |
2003 } | 2012 } |
2004 | 2013 |
2005 | 2014 |
2006 v8::Handle<Value> Message::GetScriptData() const { | 2015 v8::Handle<Value> Message::GetScriptData() const { |
2007 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2016 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2008 if (IsDeadCheck(isolate, "v8::Message::GetScriptResourceData()")) { | 2017 if (IsDeadCheck(isolate, "v8::Message::GetScriptResourceData()")) { |
2009 return Local<Value>(); | 2018 return Local<Value>(); |
2010 } | 2019 } |
2011 ENTER_V8(isolate); | 2020 ENTER_V8(isolate); |
2012 HandleScope scope; | 2021 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
2013 i::Handle<i::JSMessageObject> message = | 2022 i::Handle<i::JSMessageObject> message = |
2014 i::Handle<i::JSMessageObject>::cast(Utils::OpenHandle(this)); | 2023 i::Handle<i::JSMessageObject>::cast(Utils::OpenHandle(this)); |
2015 // Return this.script.data. | 2024 // Return this.script.data. |
2016 i::Handle<i::JSValue> script = | 2025 i::Handle<i::JSValue> script = |
2017 i::Handle<i::JSValue>::cast(i::Handle<i::Object>(message->script(), | 2026 i::Handle<i::JSValue>::cast(i::Handle<i::Object>(message->script(), |
2018 isolate)); | 2027 isolate)); |
2019 i::Handle<i::Object> data(i::Script::cast(script->value())->data(), isolate); | 2028 i::Handle<i::Object> data(i::Script::cast(script->value())->data(), isolate); |
2020 return scope.Close(Utils::ToLocal(data)); | 2029 return scope.Close(Utils::ToLocal(data)); |
2021 } | 2030 } |
2022 | 2031 |
2023 | 2032 |
2024 v8::Handle<v8::StackTrace> Message::GetStackTrace() const { | 2033 v8::Handle<v8::StackTrace> Message::GetStackTrace() const { |
2025 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2034 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2026 if (IsDeadCheck(isolate, "v8::Message::GetStackTrace()")) { | 2035 if (IsDeadCheck(isolate, "v8::Message::GetStackTrace()")) { |
2027 return Local<v8::StackTrace>(); | 2036 return Local<v8::StackTrace>(); |
2028 } | 2037 } |
2029 ENTER_V8(isolate); | 2038 ENTER_V8(isolate); |
2030 HandleScope scope; | 2039 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
2031 i::Handle<i::JSMessageObject> message = | 2040 i::Handle<i::JSMessageObject> message = |
2032 i::Handle<i::JSMessageObject>::cast(Utils::OpenHandle(this)); | 2041 i::Handle<i::JSMessageObject>::cast(Utils::OpenHandle(this)); |
2033 i::Handle<i::Object> stackFramesObj(message->stack_frames(), isolate); | 2042 i::Handle<i::Object> stackFramesObj(message->stack_frames(), isolate); |
2034 if (!stackFramesObj->IsJSArray()) return v8::Handle<v8::StackTrace>(); | 2043 if (!stackFramesObj->IsJSArray()) return v8::Handle<v8::StackTrace>(); |
2035 i::Handle<i::JSArray> stackTrace = | 2044 i::Handle<i::JSArray> stackTrace = |
2036 i::Handle<i::JSArray>::cast(stackFramesObj); | 2045 i::Handle<i::JSArray>::cast(stackFramesObj); |
2037 return scope.Close(Utils::StackTraceToLocal(stackTrace)); | 2046 return scope.Close(Utils::StackTraceToLocal(stackTrace)); |
2038 } | 2047 } |
2039 | 2048 |
2040 | 2049 |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2140 int start = message->start_position(); | 2149 int start = message->start_position(); |
2141 int end = message->end_position(); | 2150 int end = message->end_position(); |
2142 return static_cast<int>(start_col_obj->Number()) + (end - start); | 2151 return static_cast<int>(start_col_obj->Number()) + (end - start); |
2143 } | 2152 } |
2144 | 2153 |
2145 | 2154 |
2146 Local<String> Message::GetSourceLine() const { | 2155 Local<String> Message::GetSourceLine() const { |
2147 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2156 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2148 ON_BAILOUT(isolate, "v8::Message::GetSourceLine()", return Local<String>()); | 2157 ON_BAILOUT(isolate, "v8::Message::GetSourceLine()", return Local<String>()); |
2149 ENTER_V8(isolate); | 2158 ENTER_V8(isolate); |
2150 HandleScope scope; | 2159 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
2151 EXCEPTION_PREAMBLE(isolate); | 2160 EXCEPTION_PREAMBLE(isolate); |
2152 i::Handle<i::Object> result = CallV8HeapFunction("GetSourceLine", | 2161 i::Handle<i::Object> result = CallV8HeapFunction("GetSourceLine", |
2153 Utils::OpenHandle(this), | 2162 Utils::OpenHandle(this), |
2154 &has_pending_exception); | 2163 &has_pending_exception); |
2155 EXCEPTION_BAILOUT_CHECK(isolate, Local<v8::String>()); | 2164 EXCEPTION_BAILOUT_CHECK(isolate, Local<v8::String>()); |
2156 if (result->IsString()) { | 2165 if (result->IsString()) { |
2157 return scope.Close(Utils::ToLocal(i::Handle<i::String>::cast(result))); | 2166 return scope.Close(Utils::ToLocal(i::Handle<i::String>::cast(result))); |
2158 } else { | 2167 } else { |
2159 return Local<String>(); | 2168 return Local<String>(); |
2160 } | 2169 } |
2161 } | 2170 } |
2162 | 2171 |
2163 | 2172 |
2164 void Message::PrintCurrentStackTrace(FILE* out) { | 2173 void Message::PrintCurrentStackTrace(FILE* out) { |
2165 i::Isolate* isolate = i::Isolate::Current(); | 2174 i::Isolate* isolate = i::Isolate::Current(); |
2166 if (IsDeadCheck(isolate, "v8::Message::PrintCurrentStackTrace()")) return; | 2175 if (IsDeadCheck(isolate, "v8::Message::PrintCurrentStackTrace()")) return; |
2167 ENTER_V8(isolate); | 2176 ENTER_V8(isolate); |
2168 isolate->PrintCurrentStackTrace(out); | 2177 isolate->PrintCurrentStackTrace(out); |
2169 } | 2178 } |
2170 | 2179 |
2171 | 2180 |
2172 // --- S t a c k T r a c e --- | 2181 // --- S t a c k T r a c e --- |
2173 | 2182 |
2174 Local<StackFrame> StackTrace::GetFrame(uint32_t index) const { | 2183 Local<StackFrame> StackTrace::GetFrame(uint32_t index) const { |
2175 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2184 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2176 if (IsDeadCheck(isolate, "v8::StackTrace::GetFrame()")) { | 2185 if (IsDeadCheck(isolate, "v8::StackTrace::GetFrame()")) { |
2177 return Local<StackFrame>(); | 2186 return Local<StackFrame>(); |
2178 } | 2187 } |
2179 ENTER_V8(isolate); | 2188 ENTER_V8(isolate); |
2180 HandleScope scope; | 2189 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
2181 i::Handle<i::JSArray> self = Utils::OpenHandle(this); | 2190 i::Handle<i::JSArray> self = Utils::OpenHandle(this); |
2182 i::Object* raw_object = self->GetElementNoExceptionThrown(index); | 2191 i::Object* raw_object = self->GetElementNoExceptionThrown(index); |
2183 i::Handle<i::JSObject> obj(i::JSObject::cast(raw_object)); | 2192 i::Handle<i::JSObject> obj(i::JSObject::cast(raw_object)); |
2184 return scope.Close(Utils::StackFrameToLocal(obj)); | 2193 return scope.Close(Utils::StackFrameToLocal(obj)); |
2185 } | 2194 } |
2186 | 2195 |
2187 | 2196 |
2188 int StackTrace::GetFrameCount() const { | 2197 int StackTrace::GetFrameCount() const { |
2189 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2198 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2190 if (IsDeadCheck(isolate, "v8::StackTrace::GetFrameCount()")) return -1; | 2199 if (IsDeadCheck(isolate, "v8::StackTrace::GetFrameCount()")) return -1; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2247 return i::Smi::cast(*column)->value(); | 2256 return i::Smi::cast(*column)->value(); |
2248 } | 2257 } |
2249 | 2258 |
2250 | 2259 |
2251 Local<String> StackFrame::GetScriptName() const { | 2260 Local<String> StackFrame::GetScriptName() const { |
2252 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2261 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2253 if (IsDeadCheck(isolate, "v8::StackFrame::GetScriptName()")) { | 2262 if (IsDeadCheck(isolate, "v8::StackFrame::GetScriptName()")) { |
2254 return Local<String>(); | 2263 return Local<String>(); |
2255 } | 2264 } |
2256 ENTER_V8(isolate); | 2265 ENTER_V8(isolate); |
2257 HandleScope scope; | 2266 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
2258 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2267 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
2259 i::Handle<i::Object> name = GetProperty(self, "scriptName"); | 2268 i::Handle<i::Object> name = GetProperty(self, "scriptName"); |
2260 if (!name->IsString()) { | 2269 if (!name->IsString()) { |
2261 return Local<String>(); | 2270 return Local<String>(); |
2262 } | 2271 } |
2263 return scope.Close(Local<String>::Cast(Utils::ToLocal(name))); | 2272 return scope.Close(Local<String>::Cast(Utils::ToLocal(name))); |
2264 } | 2273 } |
2265 | 2274 |
2266 | 2275 |
2267 Local<String> StackFrame::GetScriptNameOrSourceURL() const { | 2276 Local<String> StackFrame::GetScriptNameOrSourceURL() const { |
2268 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2277 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2269 if (IsDeadCheck(isolate, "v8::StackFrame::GetScriptNameOrSourceURL()")) { | 2278 if (IsDeadCheck(isolate, "v8::StackFrame::GetScriptNameOrSourceURL()")) { |
2270 return Local<String>(); | 2279 return Local<String>(); |
2271 } | 2280 } |
2272 ENTER_V8(isolate); | 2281 ENTER_V8(isolate); |
2273 HandleScope scope; | 2282 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
2274 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2283 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
2275 i::Handle<i::Object> name = GetProperty(self, "scriptNameOrSourceURL"); | 2284 i::Handle<i::Object> name = GetProperty(self, "scriptNameOrSourceURL"); |
2276 if (!name->IsString()) { | 2285 if (!name->IsString()) { |
2277 return Local<String>(); | 2286 return Local<String>(); |
2278 } | 2287 } |
2279 return scope.Close(Local<String>::Cast(Utils::ToLocal(name))); | 2288 return scope.Close(Local<String>::Cast(Utils::ToLocal(name))); |
2280 } | 2289 } |
2281 | 2290 |
2282 | 2291 |
2283 Local<String> StackFrame::GetFunctionName() const { | 2292 Local<String> StackFrame::GetFunctionName() const { |
2284 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2293 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2285 if (IsDeadCheck(isolate, "v8::StackFrame::GetFunctionName()")) { | 2294 if (IsDeadCheck(isolate, "v8::StackFrame::GetFunctionName()")) { |
2286 return Local<String>(); | 2295 return Local<String>(); |
2287 } | 2296 } |
2288 ENTER_V8(isolate); | 2297 ENTER_V8(isolate); |
2289 HandleScope scope; | 2298 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
2290 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2299 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
2291 i::Handle<i::Object> name = GetProperty(self, "functionName"); | 2300 i::Handle<i::Object> name = GetProperty(self, "functionName"); |
2292 if (!name->IsString()) { | 2301 if (!name->IsString()) { |
2293 return Local<String>(); | 2302 return Local<String>(); |
2294 } | 2303 } |
2295 return scope.Close(Local<String>::Cast(Utils::ToLocal(name))); | 2304 return scope.Close(Local<String>::Cast(Utils::ToLocal(name))); |
2296 } | 2305 } |
2297 | 2306 |
2298 | 2307 |
2299 bool StackFrame::IsEval() const { | 2308 bool StackFrame::IsEval() const { |
(...skipping 973 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3273 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); | 3282 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); |
3274 return self->HasProperty(*key_obj); | 3283 return self->HasProperty(*key_obj); |
3275 } | 3284 } |
3276 | 3285 |
3277 | 3286 |
3278 bool v8::Object::Delete(uint32_t index) { | 3287 bool v8::Object::Delete(uint32_t index) { |
3279 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3288 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
3280 ON_BAILOUT(isolate, "v8::Object::DeleteProperty()", | 3289 ON_BAILOUT(isolate, "v8::Object::DeleteProperty()", |
3281 return false); | 3290 return false); |
3282 ENTER_V8(isolate); | 3291 ENTER_V8(isolate); |
3283 HandleScope scope; | 3292 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
3284 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3293 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
3285 return i::JSObject::DeleteElement(self, index)->IsTrue(); | 3294 return i::JSObject::DeleteElement(self, index)->IsTrue(); |
3286 } | 3295 } |
3287 | 3296 |
3288 | 3297 |
3289 bool v8::Object::Has(uint32_t index) { | 3298 bool v8::Object::Has(uint32_t index) { |
3290 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3299 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
3291 ON_BAILOUT(isolate, "v8::Object::HasProperty()", return false); | 3300 ON_BAILOUT(isolate, "v8::Object::HasProperty()", return false); |
3292 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3301 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
3293 return self->HasElement(index); | 3302 return self->HasElement(index); |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3851 | 3860 |
3852 Local<v8::Object> Function::NewInstance(int argc, | 3861 Local<v8::Object> Function::NewInstance(int argc, |
3853 v8::Handle<v8::Value> argv[]) const { | 3862 v8::Handle<v8::Value> argv[]) const { |
3854 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3863 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
3855 ON_BAILOUT(isolate, "v8::Function::NewInstance()", | 3864 ON_BAILOUT(isolate, "v8::Function::NewInstance()", |
3856 return Local<v8::Object>()); | 3865 return Local<v8::Object>()); |
3857 LOG_API(isolate, "Function::NewInstance"); | 3866 LOG_API(isolate, "Function::NewInstance"); |
3858 ENTER_V8(isolate); | 3867 ENTER_V8(isolate); |
3859 i::Logger::TimerEventScope timer_scope( | 3868 i::Logger::TimerEventScope timer_scope( |
3860 isolate, i::Logger::TimerEventScope::v8_execute); | 3869 isolate, i::Logger::TimerEventScope::v8_execute); |
3861 HandleScope scope; | 3870 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
3862 i::Handle<i::JSFunction> function = Utils::OpenHandle(this); | 3871 i::Handle<i::JSFunction> function = Utils::OpenHandle(this); |
3863 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**)); | 3872 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**)); |
3864 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); | 3873 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); |
3865 EXCEPTION_PREAMBLE(isolate); | 3874 EXCEPTION_PREAMBLE(isolate); |
3866 i::Handle<i::Object> returned = | 3875 i::Handle<i::Object> returned = |
3867 i::Execution::New(function, argc, args, &has_pending_exception); | 3876 i::Execution::New(function, argc, args, &has_pending_exception); |
3868 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<v8::Object>()); | 3877 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<v8::Object>()); |
3869 return scope.Close(Utils::ToLocal(i::Handle<i::JSObject>::cast(returned))); | 3878 return scope.Close(Utils::ToLocal(i::Handle<i::JSObject>::cast(returned))); |
3870 } | 3879 } |
3871 | 3880 |
(...skipping 2435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6307 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); | 6316 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); |
6308 return Utils::ToLocal(result); | 6317 return Utils::ToLocal(result); |
6309 } | 6318 } |
6310 | 6319 |
6311 | 6320 |
6312 Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) { | 6321 Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) { |
6313 i::Isolate* isolate = i::Isolate::Current(); | 6322 i::Isolate* isolate = i::Isolate::Current(); |
6314 if (!isolate->IsInitialized()) return Local<Value>(); | 6323 if (!isolate->IsInitialized()) return Local<Value>(); |
6315 ON_BAILOUT(isolate, "v8::Debug::GetMirror()", return Local<Value>()); | 6324 ON_BAILOUT(isolate, "v8::Debug::GetMirror()", return Local<Value>()); |
6316 ENTER_V8(isolate); | 6325 ENTER_V8(isolate); |
6317 v8::HandleScope scope; | 6326 v8::HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
6318 i::Debug* isolate_debug = isolate->debug(); | 6327 i::Debug* isolate_debug = isolate->debug(); |
6319 isolate_debug->Load(); | 6328 isolate_debug->Load(); |
6320 i::Handle<i::JSObject> debug(isolate_debug->debug_context()->global_object()); | 6329 i::Handle<i::JSObject> debug(isolate_debug->debug_context()->global_object()); |
6321 i::Handle<i::String> name = isolate->factory()->InternalizeOneByteString( | 6330 i::Handle<i::String> name = isolate->factory()->InternalizeOneByteString( |
6322 STATIC_ASCII_VECTOR("MakeMirror")); | 6331 STATIC_ASCII_VECTOR("MakeMirror")); |
6323 i::Handle<i::Object> fun_obj = i::GetProperty(isolate, debug, name); | 6332 i::Handle<i::Object> fun_obj = i::GetProperty(isolate, debug, name); |
6324 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(fun_obj); | 6333 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(fun_obj); |
6325 v8::Handle<v8::Function> v8_fun = Utils::ToLocal(fun); | 6334 v8::Handle<v8::Function> v8_fun = Utils::ToLocal(fun); |
6326 const int kArgc = 1; | 6335 const int kArgc = 1; |
6327 v8::Handle<v8::Value> argv[kArgc] = { obj }; | 6336 v8::Handle<v8::Value> argv[kArgc] = { obj }; |
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7064 | 7073 |
7065 v->VisitPointers(blocks_.first(), first_block_limit_); | 7074 v->VisitPointers(blocks_.first(), first_block_limit_); |
7066 | 7075 |
7067 for (int i = 1; i < blocks_.length(); i++) { | 7076 for (int i = 1; i < blocks_.length(); i++) { |
7068 v->VisitPointers(blocks_[i], &blocks_[i][kHandleBlockSize]); | 7077 v->VisitPointers(blocks_[i], &blocks_[i][kHandleBlockSize]); |
7069 } | 7078 } |
7070 } | 7079 } |
7071 | 7080 |
7072 | 7081 |
7073 } } // namespace v8::internal | 7082 } } // namespace v8::internal |
OLD | NEW |