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

Side by Side Diff: src/api.cc

Issue 12716010: Added a version of the v8::HandleScope constructor with an Isolate and use that consistently. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Feedback. Rebased Created 7 years, 9 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 | « samples/shell.cc ('k') | src/d8.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 // 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
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
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
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
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
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
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
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 2439 matching lines...) Expand 10 before | Expand all | Expand 10 after
6311 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); 6320 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>());
6312 return Utils::ToLocal(result); 6321 return Utils::ToLocal(result);
6313 } 6322 }
6314 6323
6315 6324
6316 Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) { 6325 Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) {
6317 i::Isolate* isolate = i::Isolate::Current(); 6326 i::Isolate* isolate = i::Isolate::Current();
6318 if (!isolate->IsInitialized()) return Local<Value>(); 6327 if (!isolate->IsInitialized()) return Local<Value>();
6319 ON_BAILOUT(isolate, "v8::Debug::GetMirror()", return Local<Value>()); 6328 ON_BAILOUT(isolate, "v8::Debug::GetMirror()", return Local<Value>());
6320 ENTER_V8(isolate); 6329 ENTER_V8(isolate);
6321 v8::HandleScope scope; 6330 v8::HandleScope scope(reinterpret_cast<Isolate*>(isolate));
6322 i::Debug* isolate_debug = isolate->debug(); 6331 i::Debug* isolate_debug = isolate->debug();
6323 isolate_debug->Load(); 6332 isolate_debug->Load();
6324 i::Handle<i::JSObject> debug(isolate_debug->debug_context()->global_object()); 6333 i::Handle<i::JSObject> debug(isolate_debug->debug_context()->global_object());
6325 i::Handle<i::String> name = isolate->factory()->InternalizeOneByteString( 6334 i::Handle<i::String> name = isolate->factory()->InternalizeOneByteString(
6326 STATIC_ASCII_VECTOR("MakeMirror")); 6335 STATIC_ASCII_VECTOR("MakeMirror"));
6327 i::Handle<i::Object> fun_obj = i::GetProperty(isolate, debug, name); 6336 i::Handle<i::Object> fun_obj = i::GetProperty(isolate, debug, name);
6328 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(fun_obj); 6337 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(fun_obj);
6329 v8::Handle<v8::Function> v8_fun = Utils::ToLocal(fun); 6338 v8::Handle<v8::Function> v8_fun = Utils::ToLocal(fun);
6330 const int kArgc = 1; 6339 const int kArgc = 1;
6331 v8::Handle<v8::Value> argv[kArgc] = { obj }; 6340 v8::Handle<v8::Value> argv[kArgc] = { obj };
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after
7068 7077
7069 v->VisitPointers(blocks_.first(), first_block_limit_); 7078 v->VisitPointers(blocks_.first(), first_block_limit_);
7070 7079
7071 for (int i = 1; i < blocks_.length(); i++) { 7080 for (int i = 1; i < blocks_.length(); i++) {
7072 v->VisitPointers(blocks_[i], &blocks_[i][kHandleBlockSize]); 7081 v->VisitPointers(blocks_[i], &blocks_[i][kHandleBlockSize]);
7073 } 7082 }
7074 } 7083 }
7075 7084
7076 7085
7077 } } // namespace v8::internal 7086 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « samples/shell.cc ('k') | src/d8.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698