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 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 void V8::SetFlagsFromString(const char* str, int length) { | 465 void V8::SetFlagsFromString(const char* str, int length) { |
466 i::FlagList::SetFlagsFromString(str, length); | 466 i::FlagList::SetFlagsFromString(str, length); |
467 } | 467 } |
468 | 468 |
469 | 469 |
470 void V8::SetFlagsFromCommandLine(int* argc, char** argv, bool remove_flags) { | 470 void V8::SetFlagsFromCommandLine(int* argc, char** argv, bool remove_flags) { |
471 i::FlagList::SetFlagsFromCommandLine(argc, argv, remove_flags); | 471 i::FlagList::SetFlagsFromCommandLine(argc, argv, remove_flags); |
472 } | 472 } |
473 | 473 |
474 | 474 |
475 v8::Handle<Value> ThrowException(v8::Handle<v8::Value> value) { | |
476 return v8::Isolate::GetCurrent()->ThrowException(value); | |
477 } | |
478 | |
479 | |
480 RegisteredExtension* RegisteredExtension::first_extension_ = NULL; | 475 RegisteredExtension* RegisteredExtension::first_extension_ = NULL; |
481 | 476 |
482 | 477 |
483 RegisteredExtension::RegisteredExtension(Extension* extension) | 478 RegisteredExtension::RegisteredExtension(Extension* extension) |
484 : extension_(extension) { } | 479 : extension_(extension) { } |
485 | 480 |
486 | 481 |
487 void RegisteredExtension::Register(RegisteredExtension* that) { | 482 void RegisteredExtension::Register(RegisteredExtension* that) { |
488 that->next_ = first_extension_; | 483 that->next_ = first_extension_; |
489 first_extension_ = that; | 484 first_extension_ = that; |
(...skipping 26 matching lines...) Expand all Loading... |
516 source_length : | 511 source_length : |
517 (source ? static_cast<int>(strlen(source)) : 0)), | 512 (source ? static_cast<int>(strlen(source)) : 0)), |
518 source_(source, source_length_), | 513 source_(source, source_length_), |
519 dep_count_(dep_count), | 514 dep_count_(dep_count), |
520 deps_(deps), | 515 deps_(deps), |
521 auto_enable_(false) { | 516 auto_enable_(false) { |
522 CHECK(source != NULL || source_length_ == 0); | 517 CHECK(source != NULL || source_length_ == 0); |
523 } | 518 } |
524 | 519 |
525 | 520 |
526 v8::Handle<Primitive> Undefined() { | |
527 i::Isolate* isolate = i::Isolate::Current(); | |
528 if (!EnsureInitializedForIsolate(isolate, "v8::Undefined()")) { | |
529 return v8::Handle<v8::Primitive>(); | |
530 } | |
531 return ToApiHandle<Primitive>(isolate->factory()->undefined_value()); | |
532 } | |
533 | |
534 | |
535 v8::Handle<Primitive> Null() { | |
536 i::Isolate* isolate = i::Isolate::Current(); | |
537 if (!EnsureInitializedForIsolate(isolate, "v8::Null()")) { | |
538 return v8::Handle<v8::Primitive>(); | |
539 } | |
540 return ToApiHandle<Primitive>(isolate->factory()->null_value()); | |
541 } | |
542 | |
543 | |
544 v8::Handle<Boolean> True() { | |
545 i::Isolate* isolate = i::Isolate::Current(); | |
546 if (!EnsureInitializedForIsolate(isolate, "v8::True()")) { | |
547 return v8::Handle<Boolean>(); | |
548 } | |
549 return ToApiHandle<Boolean>(isolate->factory()->true_value()); | |
550 } | |
551 | |
552 | |
553 v8::Handle<Boolean> False() { | |
554 i::Isolate* isolate = i::Isolate::Current(); | |
555 if (!EnsureInitializedForIsolate(isolate, "v8::False()")) { | |
556 return v8::Handle<Boolean>(); | |
557 } | |
558 return ToApiHandle<Boolean>(isolate->factory()->false_value()); | |
559 } | |
560 | |
561 | |
562 ResourceConstraints::ResourceConstraints() | 521 ResourceConstraints::ResourceConstraints() |
563 : max_young_space_size_(0), | 522 : max_young_space_size_(0), |
564 max_old_space_size_(0), | 523 max_old_space_size_(0), |
565 max_executable_size_(0), | 524 max_executable_size_(0), |
566 stack_limit_(NULL), | 525 stack_limit_(NULL), |
567 max_available_threads_(0) { } | 526 max_available_threads_(0) { } |
568 | 527 |
569 void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory, | 528 void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory, |
570 uint32_t number_of_processors) { | 529 uint32_t number_of_processors) { |
571 const int lump_of_memory = (i::kPointerSize / 4) * i::MB; | 530 const int lump_of_memory = (i::kPointerSize / 4) * i::MB; |
(...skipping 26 matching lines...) Expand all Loading... |
598 } else { | 557 } else { |
599 set_max_young_space_size(16 * lump_of_memory); | 558 set_max_young_space_size(16 * lump_of_memory); |
600 set_max_old_space_size(700 * lump_of_memory); | 559 set_max_old_space_size(700 * lump_of_memory); |
601 set_max_executable_size(256 * lump_of_memory); | 560 set_max_executable_size(256 * lump_of_memory); |
602 } | 561 } |
603 | 562 |
604 set_max_available_threads(i::Max(i::Min(number_of_processors, 4u), 1u)); | 563 set_max_available_threads(i::Max(i::Min(number_of_processors, 4u), 1u)); |
605 } | 564 } |
606 | 565 |
607 | 566 |
608 void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory) { | |
609 ConfigureDefaults(physical_memory, i::CPU::NumberOfProcessorsOnline()); | |
610 } | |
611 | |
612 | |
613 bool SetResourceConstraints(Isolate* v8_isolate, | 567 bool SetResourceConstraints(Isolate* v8_isolate, |
614 ResourceConstraints* constraints) { | 568 ResourceConstraints* constraints) { |
615 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); | 569 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); |
616 int young_space_size = constraints->max_young_space_size(); | 570 int young_space_size = constraints->max_young_space_size(); |
617 int old_gen_size = constraints->max_old_space_size(); | 571 int old_gen_size = constraints->max_old_space_size(); |
618 int max_executable_size = constraints->max_executable_size(); | 572 int max_executable_size = constraints->max_executable_size(); |
619 if (young_space_size != 0 || old_gen_size != 0 || max_executable_size != 0) { | 573 if (young_space_size != 0 || old_gen_size != 0 || max_executable_size != 0) { |
620 // After initialization it's too late to change Heap constraints. | 574 // After initialization it's too late to change Heap constraints. |
621 ASSERT(!isolate->IsInitialized()); | 575 ASSERT(!isolate->IsInitialized()); |
622 bool result = isolate->heap()->ConfigureHeap(young_space_size / 2, | 576 bool result = isolate->heap()->ConfigureHeap(young_space_size / 2, |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1117 for (int i = 0; i < argc; i++) { | 1071 for (int i = 0; i < argc; i++) { |
1118 if (!argv[i].IsEmpty()) | 1072 if (!argv[i].IsEmpty()) |
1119 args->set(i, *Utils::OpenHandle(*argv[i])); | 1073 args->set(i, *Utils::OpenHandle(*argv[i])); |
1120 } | 1074 } |
1121 obj->set_args(*args); | 1075 obj->set_args(*args); |
1122 } | 1076 } |
1123 return Utils::ToLocal(obj); | 1077 return Utils::ToLocal(obj); |
1124 } | 1078 } |
1125 | 1079 |
1126 | 1080 |
1127 Local<Signature> Signature::New(Handle<FunctionTemplate> receiver, | |
1128 int argc, Handle<FunctionTemplate> argv[]) { | |
1129 return New(Isolate::GetCurrent(), receiver, argc, argv); | |
1130 } | |
1131 | |
1132 | |
1133 Local<AccessorSignature> AccessorSignature::New( | 1081 Local<AccessorSignature> AccessorSignature::New( |
1134 Isolate* isolate, | 1082 Isolate* isolate, |
1135 Handle<FunctionTemplate> receiver) { | 1083 Handle<FunctionTemplate> receiver) { |
1136 return Utils::AccessorSignatureToLocal(Utils::OpenHandle(*receiver)); | 1084 return Utils::AccessorSignatureToLocal(Utils::OpenHandle(*receiver)); |
1137 } | 1085 } |
1138 | 1086 |
1139 | 1087 |
1140 // While this is just a cast, it's lame not to use an Isolate parameter. | |
1141 Local<AccessorSignature> AccessorSignature::New( | |
1142 Handle<FunctionTemplate> receiver) { | |
1143 return Utils::AccessorSignatureToLocal(Utils::OpenHandle(*receiver)); | |
1144 } | |
1145 | |
1146 | |
1147 template<typename Operation> | 1088 template<typename Operation> |
1148 static Local<Operation> NewDescriptor( | 1089 static Local<Operation> NewDescriptor( |
1149 Isolate* isolate, | 1090 Isolate* isolate, |
1150 const i::DeclaredAccessorDescriptorData& data, | 1091 const i::DeclaredAccessorDescriptorData& data, |
1151 Data* previous_descriptor) { | 1092 Data* previous_descriptor) { |
1152 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); | 1093 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); |
1153 i::Handle<i::DeclaredAccessorDescriptor> previous = | 1094 i::Handle<i::DeclaredAccessorDescriptor> previous = |
1154 i::Handle<i::DeclaredAccessorDescriptor>(); | 1095 i::Handle<i::DeclaredAccessorDescriptor>(); |
1155 if (previous_descriptor != NULL) { | 1096 if (previous_descriptor != NULL) { |
1156 previous = Utils::OpenHandle( | 1097 previous = Utils::OpenHandle( |
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1913 result = | 1854 result = |
1914 i::Handle<i::SharedFunctionInfo>(i::SharedFunctionInfo::cast(*obj)); | 1855 i::Handle<i::SharedFunctionInfo>(i::SharedFunctionInfo::cast(*obj)); |
1915 } else { | 1856 } else { |
1916 result = | 1857 result = |
1917 i::Handle<i::SharedFunctionInfo>(i::JSFunction::cast(*obj)->shared()); | 1858 i::Handle<i::SharedFunctionInfo>(i::JSFunction::cast(*obj)->shared()); |
1918 } | 1859 } |
1919 return result; | 1860 return result; |
1920 } | 1861 } |
1921 | 1862 |
1922 | 1863 |
1923 Local<Value> Script::Id() { | |
1924 i::Handle<i::HeapObject> obj = | |
1925 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this)); | |
1926 i::Isolate* isolate = obj->GetIsolate(); | |
1927 ON_BAILOUT(isolate, "v8::Script::Id()", return Local<Value>()); | |
1928 LOG_API(isolate, "Script::Id"); | |
1929 i::Object* raw_id = NULL; | |
1930 { | |
1931 i::HandleScope scope(isolate); | |
1932 i::Handle<i::SharedFunctionInfo> function_info = OpenScript(this); | |
1933 i::Handle<i::Script> script(i::Script::cast(function_info->script())); | |
1934 i::Handle<i::Object> id(script->id(), isolate); | |
1935 raw_id = *id; | |
1936 } | |
1937 i::Handle<i::Object> id(raw_id, isolate); | |
1938 return Utils::ToLocal(id); | |
1939 } | |
1940 | |
1941 | |
1942 int Script::GetId() { | 1864 int Script::GetId() { |
1943 i::Handle<i::HeapObject> obj = | 1865 i::Handle<i::HeapObject> obj = |
1944 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this)); | 1866 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this)); |
1945 i::Isolate* isolate = obj->GetIsolate(); | 1867 i::Isolate* isolate = obj->GetIsolate(); |
1946 ON_BAILOUT(isolate, "v8::Script::Id()", return -1); | 1868 ON_BAILOUT(isolate, "v8::Script::Id()", return -1); |
1947 LOG_API(isolate, "Script::Id"); | 1869 LOG_API(isolate, "Script::Id"); |
1948 { | 1870 { |
1949 i::HandleScope scope(isolate); | 1871 i::HandleScope scope(isolate); |
1950 i::Handle<i::SharedFunctionInfo> function_info = OpenScript(this); | 1872 i::Handle<i::SharedFunctionInfo> function_info = OpenScript(this); |
1951 i::Handle<i::Script> script(i::Script::cast(function_info->script())); | 1873 i::Handle<i::Script> script(i::Script::cast(function_info->script())); |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2314 } | 2236 } |
2315 | 2237 |
2316 | 2238 |
2317 void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) { | 2239 void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) { |
2318 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 2240 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
2319 ENTER_V8(i_isolate); | 2241 ENTER_V8(i_isolate); |
2320 i_isolate->PrintCurrentStackTrace(out); | 2242 i_isolate->PrintCurrentStackTrace(out); |
2321 } | 2243 } |
2322 | 2244 |
2323 | 2245 |
2324 void Message::PrintCurrentStackTrace(FILE* out) { | |
2325 PrintCurrentStackTrace(Isolate::GetCurrent(), out); | |
2326 } | |
2327 | |
2328 | |
2329 // --- S t a c k T r a c e --- | 2246 // --- S t a c k T r a c e --- |
2330 | 2247 |
2331 Local<StackFrame> StackTrace::GetFrame(uint32_t index) const { | 2248 Local<StackFrame> StackTrace::GetFrame(uint32_t index) const { |
2332 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2249 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2333 ENTER_V8(isolate); | 2250 ENTER_V8(isolate); |
2334 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); | 2251 HandleScope scope(reinterpret_cast<Isolate*>(isolate)); |
2335 i::Handle<i::JSArray> self = Utils::OpenHandle(this); | 2252 i::Handle<i::JSArray> self = Utils::OpenHandle(this); |
2336 i::Object* raw_object = self->GetElementNoExceptionThrown(isolate, index); | 2253 i::Object* raw_object = self->GetElementNoExceptionThrown(isolate, index); |
2337 i::Handle<i::JSObject> obj(i::JSObject::cast(raw_object)); | 2254 i::Handle<i::JSObject> obj(i::JSObject::cast(raw_object)); |
2338 return scope.Close(Utils::StackFrameToLocal(obj)); | 2255 return scope.Close(Utils::StackFrameToLocal(obj)); |
(...skipping 19 matching lines...) Expand all Loading... |
2358 int frame_limit, | 2275 int frame_limit, |
2359 StackTraceOptions options) { | 2276 StackTraceOptions options) { |
2360 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 2277 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
2361 ENTER_V8(i_isolate); | 2278 ENTER_V8(i_isolate); |
2362 i::Handle<i::JSArray> stackTrace = | 2279 i::Handle<i::JSArray> stackTrace = |
2363 i_isolate->CaptureCurrentStackTrace(frame_limit, options); | 2280 i_isolate->CaptureCurrentStackTrace(frame_limit, options); |
2364 return Utils::StackTraceToLocal(stackTrace); | 2281 return Utils::StackTraceToLocal(stackTrace); |
2365 } | 2282 } |
2366 | 2283 |
2367 | 2284 |
2368 Local<StackTrace> StackTrace::CurrentStackTrace(int frame_limit, | |
2369 StackTraceOptions options) { | |
2370 return CurrentStackTrace(Isolate::GetCurrent(), frame_limit, options); | |
2371 } | |
2372 | |
2373 | |
2374 // --- S t a c k F r a m e --- | 2285 // --- S t a c k F r a m e --- |
2375 | 2286 |
2376 int StackFrame::GetLineNumber() const { | 2287 int StackFrame::GetLineNumber() const { |
2377 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 2288 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
2378 ENTER_V8(isolate); | 2289 ENTER_V8(isolate); |
2379 i::HandleScope scope(isolate); | 2290 i::HandleScope scope(isolate); |
2380 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 2291 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
2381 i::Handle<i::Object> line = GetProperty(self, "lineNumber"); | 2292 i::Handle<i::Object> line = GetProperty(self, "lineNumber"); |
2382 if (!line->IsSmi()) { | 2293 if (!line->IsSmi()) { |
2383 return Message::kNoLineNumberInfo; | 2294 return Message::kNoLineNumberInfo; |
(...skipping 1895 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4279 return kLineOffsetNotFound; | 4190 return kLineOffsetNotFound; |
4280 } | 4191 } |
4281 | 4192 |
4282 | 4193 |
4283 bool Function::IsBuiltin() const { | 4194 bool Function::IsBuiltin() const { |
4284 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); | 4195 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); |
4285 return func->IsBuiltin(); | 4196 return func->IsBuiltin(); |
4286 } | 4197 } |
4287 | 4198 |
4288 | 4199 |
4289 Handle<Value> Function::GetScriptId() const { | |
4290 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); | |
4291 i::Isolate* isolate = func->GetIsolate(); | |
4292 if (!func->shared()->script()->IsScript()) { | |
4293 return v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate)); | |
4294 } | |
4295 i::Handle<i::Script> script(i::Script::cast(func->shared()->script())); | |
4296 return Utils::ToLocal(i::Handle<i::Object>(script->id(), isolate)); | |
4297 } | |
4298 | |
4299 | |
4300 int Function::ScriptId() const { | 4200 int Function::ScriptId() const { |
4301 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); | 4201 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); |
4302 if (!func->shared()->script()->IsScript()) return v8::Script::kNoScriptId; | 4202 if (!func->shared()->script()->IsScript()) return v8::Script::kNoScriptId; |
4303 i::Handle<i::Script> script(i::Script::cast(func->shared()->script())); | 4203 i::Handle<i::Script> script(i::Script::cast(func->shared()->script())); |
4304 return script->id()->value(); | 4204 return script->id()->value(); |
4305 } | 4205 } |
4306 | 4206 |
4307 | 4207 |
4308 int String::Length() const { | 4208 int String::Length() const { |
4309 i::Handle<i::String> str = Utils::OpenHandle(this); | 4209 i::Handle<i::String> str = Utils::OpenHandle(this); |
(...skipping 1057 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5367 return Utils::ToLocal(token_handle); | 5267 return Utils::ToLocal(token_handle); |
5368 } | 5268 } |
5369 | 5269 |
5370 | 5270 |
5371 bool Context::HasOutOfMemoryException() { | 5271 bool Context::HasOutOfMemoryException() { |
5372 i::Handle<i::Context> env = Utils::OpenHandle(this); | 5272 i::Handle<i::Context> env = Utils::OpenHandle(this); |
5373 return env->has_out_of_memory(); | 5273 return env->has_out_of_memory(); |
5374 } | 5274 } |
5375 | 5275 |
5376 | 5276 |
5377 bool Context::InContext() { | |
5378 return i::Isolate::Current()->context() != NULL; | |
5379 } | |
5380 | |
5381 | |
5382 v8::Isolate* Context::GetIsolate() { | 5277 v8::Isolate* Context::GetIsolate() { |
5383 i::Handle<i::Context> env = Utils::OpenHandle(this); | 5278 i::Handle<i::Context> env = Utils::OpenHandle(this); |
5384 return reinterpret_cast<Isolate*>(env->GetIsolate()); | 5279 return reinterpret_cast<Isolate*>(env->GetIsolate()); |
5385 } | 5280 } |
5386 | 5281 |
5387 | 5282 |
5388 v8::Local<v8::Context> Context::GetEntered() { | |
5389 i::Isolate* isolate = i::Isolate::Current(); | |
5390 if (!EnsureInitializedForIsolate(isolate, "v8::Context::GetEntered()")) { | |
5391 return Local<Context>(); | |
5392 } | |
5393 return reinterpret_cast<Isolate*>(isolate)->GetEnteredContext(); | |
5394 } | |
5395 | |
5396 | |
5397 v8::Local<v8::Context> Context::GetCurrent() { | |
5398 i::Isolate* isolate = i::Isolate::Current(); | |
5399 return reinterpret_cast<Isolate*>(isolate)->GetCurrentContext(); | |
5400 } | |
5401 | |
5402 | |
5403 v8::Local<v8::Context> Context::GetCalling() { | |
5404 i::Isolate* isolate = i::Isolate::Current(); | |
5405 return reinterpret_cast<Isolate*>(isolate)->GetCallingContext(); | |
5406 } | |
5407 | |
5408 | |
5409 v8::Local<v8::Object> Context::Global() { | 5283 v8::Local<v8::Object> Context::Global() { |
5410 i::Handle<i::Context> context = Utils::OpenHandle(this); | 5284 i::Handle<i::Context> context = Utils::OpenHandle(this); |
5411 i::Isolate* isolate = context->GetIsolate(); | 5285 i::Isolate* isolate = context->GetIsolate(); |
5412 i::Handle<i::Object> global(context->global_proxy(), isolate); | 5286 i::Handle<i::Object> global(context->global_proxy(), isolate); |
5413 return Utils::ToLocal(i::Handle<i::JSObject>::cast(global)); | 5287 return Utils::ToLocal(i::Handle<i::JSObject>::cast(global)); |
5414 } | 5288 } |
5415 | 5289 |
5416 | 5290 |
5417 void Context::DetachGlobal() { | 5291 void Context::DetachGlobal() { |
5418 i::Handle<i::Context> context = Utils::OpenHandle(this); | 5292 i::Handle<i::Context> context = Utils::OpenHandle(this); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5497 STATIC_ASSERT(sizeof(value) == sizeof(i::Address)); | 5371 STATIC_ASSERT(sizeof(value) == sizeof(i::Address)); |
5498 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 5372 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
5499 EnsureInitializedForIsolate(i_isolate, "v8::External::New()"); | 5373 EnsureInitializedForIsolate(i_isolate, "v8::External::New()"); |
5500 LOG_API(i_isolate, "External::New"); | 5374 LOG_API(i_isolate, "External::New"); |
5501 ENTER_V8(i_isolate); | 5375 ENTER_V8(i_isolate); |
5502 i::Handle<i::JSObject> external = i_isolate->factory()->NewExternal(value); | 5376 i::Handle<i::JSObject> external = i_isolate->factory()->NewExternal(value); |
5503 return Utils::ExternalToLocal(external); | 5377 return Utils::ExternalToLocal(external); |
5504 } | 5378 } |
5505 | 5379 |
5506 | 5380 |
5507 Local<External> v8::External::New(void* value) { | |
5508 return v8::External::New(Isolate::GetCurrent(), value); | |
5509 } | |
5510 | |
5511 | |
5512 void* External::Value() const { | 5381 void* External::Value() const { |
5513 return ExternalValue(*Utils::OpenHandle(this)); | 5382 return ExternalValue(*Utils::OpenHandle(this)); |
5514 } | 5383 } |
5515 | 5384 |
5516 | 5385 |
5517 Local<String> v8::String::Empty() { | 5386 Local<String> v8::String::Empty() { |
5518 i::Isolate* isolate = i::Isolate::Current(); | 5387 i::Isolate* isolate = i::Isolate::Current(); |
5519 if (!EnsureInitializedForIsolate(isolate, "v8::String::Empty()")) { | 5388 if (!EnsureInitializedForIsolate(isolate, "v8::String::Empty()")) { |
5520 return v8::Local<String>(); | 5389 return v8::Local<String>(); |
5521 } | 5390 } |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5693 EnsureInitializedForIsolate(i_isolate, "v8::String::NewExternal()"); | 5562 EnsureInitializedForIsolate(i_isolate, "v8::String::NewExternal()"); |
5694 LOG_API(i_isolate, "String::NewExternal"); | 5563 LOG_API(i_isolate, "String::NewExternal"); |
5695 ENTER_V8(i_isolate); | 5564 ENTER_V8(i_isolate); |
5696 CHECK(resource && resource->data()); | 5565 CHECK(resource && resource->data()); |
5697 i::Handle<i::String> result = NewExternalStringHandle(i_isolate, resource); | 5566 i::Handle<i::String> result = NewExternalStringHandle(i_isolate, resource); |
5698 i_isolate->heap()->external_string_table()->AddString(*result); | 5567 i_isolate->heap()->external_string_table()->AddString(*result); |
5699 return Utils::ToLocal(result); | 5568 return Utils::ToLocal(result); |
5700 } | 5569 } |
5701 | 5570 |
5702 | 5571 |
5703 Local<String> v8::String::NewExternal( | |
5704 v8::String::ExternalStringResource* resource) { | |
5705 return NewExternal(Isolate::GetCurrent(), resource); | |
5706 } | |
5707 | |
5708 | |
5709 bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) { | 5572 bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) { |
5710 i::Handle<i::String> obj = Utils::OpenHandle(this); | 5573 i::Handle<i::String> obj = Utils::OpenHandle(this); |
5711 i::Isolate* isolate = obj->GetIsolate(); | 5574 i::Isolate* isolate = obj->GetIsolate(); |
5712 if (i::StringShape(*obj).IsExternalTwoByte()) { | 5575 if (i::StringShape(*obj).IsExternalTwoByte()) { |
5713 return false; // Already an external string. | 5576 return false; // Already an external string. |
5714 } | 5577 } |
5715 ENTER_V8(isolate); | 5578 ENTER_V8(isolate); |
5716 if (isolate->string_tracker()->IsFreshUnusedString(obj)) { | 5579 if (isolate->string_tracker()->IsFreshUnusedString(obj)) { |
5717 return false; | 5580 return false; |
5718 } | 5581 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5750 LOG_API(i_isolate, "String::NewExternal"); | 5613 LOG_API(i_isolate, "String::NewExternal"); |
5751 ENTER_V8(i_isolate); | 5614 ENTER_V8(i_isolate); |
5752 CHECK(resource && resource->data()); | 5615 CHECK(resource && resource->data()); |
5753 i::Handle<i::String> result = | 5616 i::Handle<i::String> result = |
5754 NewExternalAsciiStringHandle(i_isolate, resource); | 5617 NewExternalAsciiStringHandle(i_isolate, resource); |
5755 i_isolate->heap()->external_string_table()->AddString(*result); | 5618 i_isolate->heap()->external_string_table()->AddString(*result); |
5756 return Utils::ToLocal(result); | 5619 return Utils::ToLocal(result); |
5757 } | 5620 } |
5758 | 5621 |
5759 | 5622 |
5760 Local<String> v8::String::NewExternal( | |
5761 v8::String::ExternalAsciiStringResource* resource) { | |
5762 return NewExternal(Isolate::GetCurrent(), resource); | |
5763 } | |
5764 | |
5765 | |
5766 bool v8::String::MakeExternal( | 5623 bool v8::String::MakeExternal( |
5767 v8::String::ExternalAsciiStringResource* resource) { | 5624 v8::String::ExternalAsciiStringResource* resource) { |
5768 i::Handle<i::String> obj = Utils::OpenHandle(this); | 5625 i::Handle<i::String> obj = Utils::OpenHandle(this); |
5769 i::Isolate* isolate = obj->GetIsolate(); | 5626 i::Isolate* isolate = obj->GetIsolate(); |
5770 if (i::StringShape(*obj).IsExternalTwoByte()) { | 5627 if (i::StringShape(*obj).IsExternalTwoByte()) { |
5771 return false; // Already an external string. | 5628 return false; // Already an external string. |
5772 } | 5629 } |
5773 ENTER_V8(isolate); | 5630 ENTER_V8(isolate); |
5774 if (isolate->string_tracker()->IsFreshUnusedString(obj)) { | 5631 if (isolate->string_tracker()->IsFreshUnusedString(obj)) { |
5775 return false; | 5632 return false; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5838 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 5695 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
5839 EnsureInitializedForIsolate(i_isolate, "v8::NumberObject::New()"); | 5696 EnsureInitializedForIsolate(i_isolate, "v8::NumberObject::New()"); |
5840 LOG_API(i_isolate, "NumberObject::New"); | 5697 LOG_API(i_isolate, "NumberObject::New"); |
5841 ENTER_V8(i_isolate); | 5698 ENTER_V8(i_isolate); |
5842 i::Handle<i::Object> number = i_isolate->factory()->NewNumber(value); | 5699 i::Handle<i::Object> number = i_isolate->factory()->NewNumber(value); |
5843 i::Handle<i::Object> obj = i_isolate->factory()->ToObject(number); | 5700 i::Handle<i::Object> obj = i_isolate->factory()->ToObject(number); |
5844 return Utils::ToLocal(obj); | 5701 return Utils::ToLocal(obj); |
5845 } | 5702 } |
5846 | 5703 |
5847 | 5704 |
5848 Local<v8::Value> v8::NumberObject::New(double value) { | |
5849 return New(Isolate::GetCurrent(), value); | |
5850 } | |
5851 | |
5852 | |
5853 double v8::NumberObject::ValueOf() const { | 5705 double v8::NumberObject::ValueOf() const { |
5854 i::Isolate* isolate = i::Isolate::Current(); | 5706 i::Isolate* isolate = i::Isolate::Current(); |
5855 LOG_API(isolate, "NumberObject::NumberValue"); | 5707 LOG_API(isolate, "NumberObject::NumberValue"); |
5856 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 5708 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
5857 i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj); | 5709 i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj); |
5858 return jsvalue->value()->Number(); | 5710 return jsvalue->value()->Number(); |
5859 } | 5711 } |
5860 | 5712 |
5861 | 5713 |
5862 Local<v8::Value> v8::BooleanObject::New(bool value) { | 5714 Local<v8::Value> v8::BooleanObject::New(bool value) { |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5934 } | 5786 } |
5935 ENTER_V8(i_isolate); | 5787 ENTER_V8(i_isolate); |
5936 EXCEPTION_PREAMBLE(i_isolate); | 5788 EXCEPTION_PREAMBLE(i_isolate); |
5937 i::Handle<i::Object> obj = | 5789 i::Handle<i::Object> obj = |
5938 i::Execution::NewDate(i_isolate, time, &has_pending_exception); | 5790 i::Execution::NewDate(i_isolate, time, &has_pending_exception); |
5939 EXCEPTION_BAILOUT_CHECK(i_isolate, Local<v8::Value>()); | 5791 EXCEPTION_BAILOUT_CHECK(i_isolate, Local<v8::Value>()); |
5940 return Utils::ToLocal(obj); | 5792 return Utils::ToLocal(obj); |
5941 } | 5793 } |
5942 | 5794 |
5943 | 5795 |
5944 Local<v8::Value> v8::Date::New(double time) { | |
5945 return New(Isolate::GetCurrent(), time); | |
5946 } | |
5947 | |
5948 | |
5949 double v8::Date::ValueOf() const { | 5796 double v8::Date::ValueOf() const { |
5950 i::Isolate* isolate = i::Isolate::Current(); | 5797 i::Isolate* isolate = i::Isolate::Current(); |
5951 LOG_API(isolate, "Date::NumberValue"); | 5798 LOG_API(isolate, "Date::NumberValue"); |
5952 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 5799 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
5953 i::Handle<i::JSDate> jsdate = i::Handle<i::JSDate>::cast(obj); | 5800 i::Handle<i::JSDate> jsdate = i::Handle<i::JSDate>::cast(obj); |
5954 return jsdate->value()->Number(); | 5801 return jsdate->value()->Number(); |
5955 } | 5802 } |
5956 | 5803 |
5957 | 5804 |
5958 void v8::Date::DateTimeConfigurationChangeNotification(Isolate* isolate) { | 5805 void v8::Date::DateTimeConfigurationChangeNotification(Isolate* isolate) { |
(...skipping 25 matching lines...) Expand all Loading... |
5984 bool caught_exception = false; | 5831 bool caught_exception = false; |
5985 i::Execution::TryCall(func, | 5832 i::Execution::TryCall(func, |
5986 i_isolate->js_builtins_object(), | 5833 i_isolate->js_builtins_object(), |
5987 0, | 5834 0, |
5988 NULL, | 5835 NULL, |
5989 &caught_exception); | 5836 &caught_exception); |
5990 } | 5837 } |
5991 } | 5838 } |
5992 | 5839 |
5993 | 5840 |
5994 void v8::Date::DateTimeConfigurationChangeNotification() { | |
5995 DateTimeConfigurationChangeNotification(Isolate::GetCurrent()); | |
5996 } | |
5997 | |
5998 | |
5999 static i::Handle<i::String> RegExpFlagsToString(RegExp::Flags flags) { | 5841 static i::Handle<i::String> RegExpFlagsToString(RegExp::Flags flags) { |
6000 i::Isolate* isolate = i::Isolate::Current(); | 5842 i::Isolate* isolate = i::Isolate::Current(); |
6001 uint8_t flags_buf[3]; | 5843 uint8_t flags_buf[3]; |
6002 int num_flags = 0; | 5844 int num_flags = 0; |
6003 if ((flags & RegExp::kGlobal) != 0) flags_buf[num_flags++] = 'g'; | 5845 if ((flags & RegExp::kGlobal) != 0) flags_buf[num_flags++] = 'g'; |
6004 if ((flags & RegExp::kMultiline) != 0) flags_buf[num_flags++] = 'm'; | 5846 if ((flags & RegExp::kMultiline) != 0) flags_buf[num_flags++] = 'm'; |
6005 if ((flags & RegExp::kIgnoreCase) != 0) flags_buf[num_flags++] = 'i'; | 5847 if ((flags & RegExp::kIgnoreCase) != 0) flags_buf[num_flags++] = 'i'; |
6006 ASSERT(num_flags <= static_cast<int>(ARRAY_SIZE(flags_buf))); | 5848 ASSERT(num_flags <= static_cast<int>(ARRAY_SIZE(flags_buf))); |
6007 return isolate->factory()->InternalizeOneByteString( | 5849 return isolate->factory()->InternalizeOneByteString( |
6008 i::Vector<const uint8_t>(flags_buf, num_flags)); | 5850 i::Vector<const uint8_t>(flags_buf, num_flags)); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6054 ENTER_V8(i_isolate); | 5896 ENTER_V8(i_isolate); |
6055 int real_length = length > 0 ? length : 0; | 5897 int real_length = length > 0 ? length : 0; |
6056 i::Handle<i::JSArray> obj = i_isolate->factory()->NewJSArray(real_length); | 5898 i::Handle<i::JSArray> obj = i_isolate->factory()->NewJSArray(real_length); |
6057 i::Handle<i::Object> length_obj = | 5899 i::Handle<i::Object> length_obj = |
6058 i_isolate->factory()->NewNumberFromInt(real_length); | 5900 i_isolate->factory()->NewNumberFromInt(real_length); |
6059 obj->set_length(*length_obj); | 5901 obj->set_length(*length_obj); |
6060 return Utils::ToLocal(obj); | 5902 return Utils::ToLocal(obj); |
6061 } | 5903 } |
6062 | 5904 |
6063 | 5905 |
6064 Local<v8::Array> v8::Array::New(int length) { | |
6065 return New(Isolate::GetCurrent(), length); | |
6066 } | |
6067 | |
6068 | |
6069 uint32_t v8::Array::Length() const { | 5906 uint32_t v8::Array::Length() const { |
6070 i::Handle<i::JSArray> obj = Utils::OpenHandle(this); | 5907 i::Handle<i::JSArray> obj = Utils::OpenHandle(this); |
6071 i::Object* length = obj->length(); | 5908 i::Object* length = obj->length(); |
6072 if (length->IsSmi()) { | 5909 if (length->IsSmi()) { |
6073 return i::Smi::cast(length)->value(); | 5910 return i::Smi::cast(length)->value(); |
6074 } else { | 5911 } else { |
6075 return static_cast<uint32_t>(length->Number()); | 5912 return static_cast<uint32_t>(length->Number()); |
6076 } | 5913 } |
6077 } | 5914 } |
6078 | 5915 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6154 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(size_t)"); | 5991 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(size_t)"); |
6155 LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)"); | 5992 LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)"); |
6156 ENTER_V8(i_isolate); | 5993 ENTER_V8(i_isolate); |
6157 i::Handle<i::JSArrayBuffer> obj = | 5994 i::Handle<i::JSArrayBuffer> obj = |
6158 i_isolate->factory()->NewJSArrayBuffer(); | 5995 i_isolate->factory()->NewJSArrayBuffer(); |
6159 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length); | 5996 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length); |
6160 return Utils::ToLocal(obj); | 5997 return Utils::ToLocal(obj); |
6161 } | 5998 } |
6162 | 5999 |
6163 | 6000 |
6164 Local<ArrayBuffer> v8::ArrayBuffer::New(size_t byte_length) { | |
6165 return New(Isolate::GetCurrent(), byte_length); | |
6166 } | |
6167 | |
6168 | |
6169 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, void* data, | 6001 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, void* data, |
6170 size_t byte_length) { | 6002 size_t byte_length) { |
6171 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6003 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
6172 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); | 6004 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); |
6173 LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); | 6005 LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); |
6174 ENTER_V8(i_isolate); | 6006 ENTER_V8(i_isolate); |
6175 i::Handle<i::JSArrayBuffer> obj = | 6007 i::Handle<i::JSArrayBuffer> obj = |
6176 i_isolate->factory()->NewJSArrayBuffer(); | 6008 i_isolate->factory()->NewJSArrayBuffer(); |
6177 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length); | 6009 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length); |
6178 return Utils::ToLocal(obj); | 6010 return Utils::ToLocal(obj); |
6179 } | 6011 } |
6180 | 6012 |
6181 | 6013 |
6182 Local<ArrayBuffer> v8::ArrayBuffer::New(void* data, size_t byte_length) { | |
6183 return New(Isolate::GetCurrent(), data, byte_length); | |
6184 } | |
6185 | |
6186 | |
6187 Local<ArrayBuffer> v8::ArrayBufferView::Buffer() { | 6014 Local<ArrayBuffer> v8::ArrayBufferView::Buffer() { |
6188 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); | 6015 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); |
6189 ASSERT(obj->buffer()->IsJSArrayBuffer()); | 6016 ASSERT(obj->buffer()->IsJSArrayBuffer()); |
6190 i::Handle<i::JSArrayBuffer> buffer(i::JSArrayBuffer::cast(obj->buffer())); | 6017 i::Handle<i::JSArrayBuffer> buffer(i::JSArrayBuffer::cast(obj->buffer())); |
6191 return Utils::ToLocal(buffer); | 6018 return Utils::ToLocal(buffer); |
6192 } | 6019 } |
6193 | 6020 |
6194 | 6021 |
6195 size_t v8::ArrayBufferView::ByteOffset() { | 6022 size_t v8::ArrayBufferView::ByteOffset() { |
6196 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); | 6023 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6509 } | 6336 } |
6510 | 6337 |
6511 | 6338 |
6512 int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( | 6339 int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( |
6513 int64_t change_in_bytes) { | 6340 int64_t change_in_bytes) { |
6514 i::Heap* heap = reinterpret_cast<i::Isolate*>(this)->heap(); | 6341 i::Heap* heap = reinterpret_cast<i::Isolate*>(this)->heap(); |
6515 return heap->AdjustAmountOfExternalAllocatedMemory(change_in_bytes); | 6342 return heap->AdjustAmountOfExternalAllocatedMemory(change_in_bytes); |
6516 } | 6343 } |
6517 | 6344 |
6518 | 6345 |
6519 int64_t V8::AdjustAmountOfExternalAllocatedMemory(int64_t change_in_bytes) { | |
6520 i::Isolate* isolate = i::Isolate::UncheckedCurrent(); | |
6521 if (isolate == NULL || !isolate->IsInitialized()) { | |
6522 return 0; | |
6523 } | |
6524 Isolate* isolate_ext = reinterpret_cast<Isolate*>(isolate); | |
6525 return isolate_ext->AdjustAmountOfExternalAllocatedMemory(change_in_bytes); | |
6526 } | |
6527 | |
6528 | |
6529 HeapProfiler* Isolate::GetHeapProfiler() { | 6346 HeapProfiler* Isolate::GetHeapProfiler() { |
6530 i::HeapProfiler* heap_profiler = | 6347 i::HeapProfiler* heap_profiler = |
6531 reinterpret_cast<i::Isolate*>(this)->heap_profiler(); | 6348 reinterpret_cast<i::Isolate*>(this)->heap_profiler(); |
6532 return reinterpret_cast<HeapProfiler*>(heap_profiler); | 6349 return reinterpret_cast<HeapProfiler*>(heap_profiler); |
6533 } | 6350 } |
6534 | 6351 |
6535 | 6352 |
6536 CpuProfiler* Isolate::GetCpuProfiler() { | 6353 CpuProfiler* Isolate::GetCpuProfiler() { |
6537 i::CpuProfiler* cpu_profiler = | 6354 i::CpuProfiler* cpu_profiler = |
6538 reinterpret_cast<i::Isolate*>(this)->cpu_profiler(); | 6355 reinterpret_cast<i::Isolate*>(this)->cpu_profiler(); |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6791 str_ = i::NewArray<char>(length_ + 1); | 6608 str_ = i::NewArray<char>(length_ + 1); |
6792 str->WriteUtf8(str_); | 6609 str->WriteUtf8(str_); |
6793 } | 6610 } |
6794 | 6611 |
6795 | 6612 |
6796 String::Utf8Value::~Utf8Value() { | 6613 String::Utf8Value::~Utf8Value() { |
6797 i::DeleteArray(str_); | 6614 i::DeleteArray(str_); |
6798 } | 6615 } |
6799 | 6616 |
6800 | 6617 |
6801 String::AsciiValue::AsciiValue(v8::Handle<v8::Value> obj) | |
6802 : str_(NULL), length_(0) { | |
6803 i::Isolate* isolate = i::Isolate::Current(); | |
6804 if (obj.IsEmpty()) return; | |
6805 ENTER_V8(isolate); | |
6806 i::HandleScope scope(isolate); | |
6807 TryCatch try_catch; | |
6808 Handle<String> str = obj->ToString(); | |
6809 if (str.IsEmpty()) return; | |
6810 length_ = str->Utf8Length(); | |
6811 str_ = i::NewArray<char>(length_ + 1); | |
6812 str->WriteUtf8(str_); | |
6813 ASSERT(i::String::NonAsciiStart(str_, length_) >= length_); | |
6814 } | |
6815 | |
6816 | |
6817 String::AsciiValue::~AsciiValue() { | |
6818 i::DeleteArray(str_); | |
6819 } | |
6820 | |
6821 | |
6822 String::Value::Value(v8::Handle<v8::Value> obj) | 6618 String::Value::Value(v8::Handle<v8::Value> obj) |
6823 : str_(NULL), length_(0) { | 6619 : str_(NULL), length_(0) { |
6824 i::Isolate* isolate = i::Isolate::Current(); | 6620 i::Isolate* isolate = i::Isolate::Current(); |
6825 if (obj.IsEmpty()) return; | 6621 if (obj.IsEmpty()) return; |
6826 ENTER_V8(isolate); | 6622 ENTER_V8(isolate); |
6827 i::HandleScope scope(isolate); | 6623 i::HandleScope scope(isolate); |
6828 TryCatch try_catch; | 6624 TryCatch try_catch; |
6829 Handle<String> str = obj->ToString(); | 6625 Handle<String> str = obj->ToString(); |
6830 if (str.IsEmpty()) return; | 6626 if (str.IsEmpty()) return; |
6831 length_ = str->Length(); | 6627 length_ = str->Length(); |
(...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7781 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 7577 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
7782 Address callback_address = | 7578 Address callback_address = |
7783 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 7579 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
7784 VMState<EXTERNAL> state(isolate); | 7580 VMState<EXTERNAL> state(isolate); |
7785 ExternalCallbackScope call_scope(isolate, callback_address); | 7581 ExternalCallbackScope call_scope(isolate, callback_address); |
7786 callback(info); | 7582 callback(info); |
7787 } | 7583 } |
7788 | 7584 |
7789 | 7585 |
7790 } } // namespace v8::internal | 7586 } } // namespace v8::internal |
OLD | NEW |