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

Side by Side Diff: src/api.cc

Issue 99193002: Remove all stuff marked as V8_DEPRECATED. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Removed support for old-skool weak callbacks. Created 7 years 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
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 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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 25 matching lines...) Expand all
648 i::Handle<i::Object> result = i::GlobalHandles::CopyGlobal(obj); 602 i::Handle<i::Object> result = i::GlobalHandles::CopyGlobal(obj);
649 #ifdef DEBUG 603 #ifdef DEBUG
650 (*obj)->Verify(); 604 (*obj)->Verify();
651 #endif // DEBUG 605 #endif // DEBUG
652 return result.location(); 606 return result.location();
653 } 607 }
654 608
655 609
656 void V8::MakeWeak(i::Object** object, 610 void V8::MakeWeak(i::Object** object,
657 void* parameters, 611 void* parameters,
658 WeakCallback weak_callback, 612 WeakCallback weak_callback) {
659 RevivableCallback weak_reference_callback) { 613 i::GlobalHandles::MakeWeak(object, parameters, weak_callback);
660 i::GlobalHandles::MakeWeak(object,
661 parameters,
662 weak_callback,
663 weak_reference_callback);
664 } 614 }
665 615
666 616
667 void V8::ClearWeak(i::Object** obj) { 617 void V8::ClearWeak(i::Object** obj) {
668 i::GlobalHandles::ClearWeakness(obj); 618 i::GlobalHandles::ClearWeakness(obj);
669 } 619 }
670 620
671 621
672 void V8::DisposeGlobal(i::Object** obj) { 622 void V8::DisposeGlobal(i::Object** obj) {
673 i::GlobalHandles::Destroy(obj); 623 i::GlobalHandles::Destroy(obj);
(...skipping 22 matching lines...) Expand all
696 646
697 647
698 void HandleScope::Initialize(Isolate* isolate) { 648 void HandleScope::Initialize(Isolate* isolate) {
699 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); 649 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate);
700 API_ENTRY_CHECK(internal_isolate, "HandleScope::HandleScope"); 650 API_ENTRY_CHECK(internal_isolate, "HandleScope::HandleScope");
701 v8::ImplementationUtilities::HandleScopeData* current = 651 v8::ImplementationUtilities::HandleScopeData* current =
702 internal_isolate->handle_scope_data(); 652 internal_isolate->handle_scope_data();
703 isolate_ = internal_isolate; 653 isolate_ = internal_isolate;
704 prev_next_ = current->next; 654 prev_next_ = current->next;
705 prev_limit_ = current->limit; 655 prev_limit_ = current->limit;
706 is_closed_ = false;
707 current->level++; 656 current->level++;
708 } 657 }
709 658
710 659
711 HandleScope::~HandleScope() { 660 HandleScope::~HandleScope() {
712 if (!is_closed_) { 661 i::HandleScope::CloseScope(isolate_, prev_next_, prev_limit_);
713 Leave();
714 }
715 } 662 }
716 663
717 664
718 void HandleScope::Leave() {
719 return i::HandleScope::CloseScope(isolate_, prev_next_, prev_limit_);
720 }
721
722
723 int HandleScope::NumberOfHandles() { 665 int HandleScope::NumberOfHandles() {
724 i::Isolate* isolate = i::Isolate::Current(); 666 i::Isolate* isolate = i::Isolate::Current();
725 if (!EnsureInitializedForIsolate(isolate, "HandleScope::NumberOfHandles")) { 667 if (!EnsureInitializedForIsolate(isolate, "HandleScope::NumberOfHandles")) {
726 return 0; 668 return 0;
727 } 669 }
728 return i::HandleScope::NumberOfHandles(isolate); 670 return i::HandleScope::NumberOfHandles(isolate);
729 } 671 }
730 672
731 673
732 i::Object** HandleScope::CreateHandle(i::Isolate* isolate, i::Object* value) { 674 i::Object** HandleScope::CreateHandle(i::Isolate* isolate, i::Object* value) {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 794
853 795
854 void Context::SetAlignedPointerInEmbedderData(int index, void* value) { 796 void Context::SetAlignedPointerInEmbedderData(int index, void* value) {
855 const char* location = "v8::Context::SetAlignedPointerInEmbedderData()"; 797 const char* location = "v8::Context::SetAlignedPointerInEmbedderData()";
856 i::Handle<i::FixedArray> data = EmbedderDataFor(this, index, true, location); 798 i::Handle<i::FixedArray> data = EmbedderDataFor(this, index, true, location);
857 data->set(index, EncodeAlignedAsSmi(value, location)); 799 data->set(index, EncodeAlignedAsSmi(value, location));
858 ASSERT_EQ(value, GetAlignedPointerFromEmbedderData(index)); 800 ASSERT_EQ(value, GetAlignedPointerFromEmbedderData(index));
859 } 801 }
860 802
861 803
862 i::Object** v8::HandleScope::RawClose(i::Object** value) {
863 if (!ApiCheck(!is_closed_,
864 "v8::HandleScope::Close()",
865 "Local scope has already been closed")) {
866 return 0;
867 }
868 LOG_API(isolate_, "CloseHandleScope");
869
870 // Read the result before popping the handle block.
871 i::Object* result = NULL;
872 if (value != NULL) {
873 result = *value;
874 }
875 is_closed_ = true;
876 Leave();
877
878 if (value == NULL) {
879 return NULL;
880 }
881
882 // Allocate a new handle on the previous handle block.
883 i::Handle<i::Object> handle(result, isolate_);
884 return handle.location();
885 }
886
887
888 // --- N e a n d e r --- 804 // --- N e a n d e r ---
889 805
890 806
891 // A constructor cannot easily return an error value, therefore it is necessary 807 // A constructor cannot easily return an error value, therefore it is necessary
892 // to check for a dead VM with ON_BAILOUT before constructing any Neander 808 // to check for a dead VM with ON_BAILOUT before constructing any Neander
893 // objects. To remind you about this there is no HandleScope in the 809 // objects. To remind you about this there is no HandleScope in the
894 // NeanderObject constructor. When you add one to the site calling the 810 // NeanderObject constructor. When you add one to the site calling the
895 // constructor you should check that you ensured the VM was not dead first. 811 // constructor you should check that you ensured the VM was not dead first.
896 NeanderObject::NeanderObject(int size) { 812 NeanderObject::NeanderObject(int size) {
897 i::Isolate* isolate = i::Isolate::Current(); 813 i::Isolate* isolate = i::Isolate::Current();
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 for (int i = 0; i < argc; i++) { 1033 for (int i = 0; i < argc; i++) {
1118 if (!argv[i].IsEmpty()) 1034 if (!argv[i].IsEmpty())
1119 args->set(i, *Utils::OpenHandle(*argv[i])); 1035 args->set(i, *Utils::OpenHandle(*argv[i]));
1120 } 1036 }
1121 obj->set_args(*args); 1037 obj->set_args(*args);
1122 } 1038 }
1123 return Utils::ToLocal(obj); 1039 return Utils::ToLocal(obj);
1124 } 1040 }
1125 1041
1126 1042
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( 1043 Local<AccessorSignature> AccessorSignature::New(
1134 Isolate* isolate, 1044 Isolate* isolate,
1135 Handle<FunctionTemplate> receiver) { 1045 Handle<FunctionTemplate> receiver) {
1136 return Utils::AccessorSignatureToLocal(Utils::OpenHandle(*receiver)); 1046 return Utils::AccessorSignatureToLocal(Utils::OpenHandle(*receiver));
1137 } 1047 }
1138 1048
1139 1049
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> 1050 template<typename Operation>
1148 static Local<Operation> NewDescriptor( 1051 static Local<Operation> NewDescriptor(
1149 Isolate* isolate, 1052 Isolate* isolate,
1150 const i::DeclaredAccessorDescriptorData& data, 1053 const i::DeclaredAccessorDescriptorData& data,
1151 Data* previous_descriptor) { 1054 Data* previous_descriptor) {
1152 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); 1055 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate);
1153 i::Handle<i::DeclaredAccessorDescriptor> previous = 1056 i::Handle<i::DeclaredAccessorDescriptor> previous =
1154 i::Handle<i::DeclaredAccessorDescriptor>(); 1057 i::Handle<i::DeclaredAccessorDescriptor>();
1155 if (previous_descriptor != NULL) { 1058 if (previous_descriptor != NULL) {
1156 previous = Utils::OpenHandle( 1059 previous = Utils::OpenHandle(
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after
1913 result = 1816 result =
1914 i::Handle<i::SharedFunctionInfo>(i::SharedFunctionInfo::cast(*obj)); 1817 i::Handle<i::SharedFunctionInfo>(i::SharedFunctionInfo::cast(*obj));
1915 } else { 1818 } else {
1916 result = 1819 result =
1917 i::Handle<i::SharedFunctionInfo>(i::JSFunction::cast(*obj)->shared()); 1820 i::Handle<i::SharedFunctionInfo>(i::JSFunction::cast(*obj)->shared());
1918 } 1821 }
1919 return result; 1822 return result;
1920 } 1823 }
1921 1824
1922 1825
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() { 1826 int Script::GetId() {
1943 i::Handle<i::HeapObject> obj = 1827 i::Handle<i::HeapObject> obj =
1944 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this)); 1828 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
1945 i::Isolate* isolate = obj->GetIsolate(); 1829 i::Isolate* isolate = obj->GetIsolate();
1946 ON_BAILOUT(isolate, "v8::Script::Id()", return -1); 1830 ON_BAILOUT(isolate, "v8::Script::Id()", return -1);
1947 LOG_API(isolate, "Script::Id"); 1831 LOG_API(isolate, "Script::Id");
1948 { 1832 {
1949 i::HandleScope scope(isolate); 1833 i::HandleScope scope(isolate);
1950 i::Handle<i::SharedFunctionInfo> function_info = OpenScript(this); 1834 i::Handle<i::SharedFunctionInfo> function_info = OpenScript(this);
1951 i::Handle<i::Script> script(i::Script::cast(function_info->script())); 1835 i::Handle<i::Script> script(i::Script::cast(function_info->script()));
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
2314 } 2198 }
2315 2199
2316 2200
2317 void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) { 2201 void Message::PrintCurrentStackTrace(Isolate* isolate, FILE* out) {
2318 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 2202 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
2319 ENTER_V8(i_isolate); 2203 ENTER_V8(i_isolate);
2320 i_isolate->PrintCurrentStackTrace(out); 2204 i_isolate->PrintCurrentStackTrace(out);
2321 } 2205 }
2322 2206
2323 2207
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 --- 2208 // --- S t a c k T r a c e ---
2330 2209
2331 Local<StackFrame> StackTrace::GetFrame(uint32_t index) const { 2210 Local<StackFrame> StackTrace::GetFrame(uint32_t index) const {
2332 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2211 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2333 ENTER_V8(isolate); 2212 ENTER_V8(isolate);
2334 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); 2213 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate));
2335 i::Handle<i::JSArray> self = Utils::OpenHandle(this); 2214 i::Handle<i::JSArray> self = Utils::OpenHandle(this);
2336 i::Object* raw_object = self->GetElementNoExceptionThrown(isolate, index); 2215 i::Object* raw_object = self->GetElementNoExceptionThrown(isolate, index);
2337 i::Handle<i::JSObject> obj(i::JSObject::cast(raw_object)); 2216 i::Handle<i::JSObject> obj(i::JSObject::cast(raw_object));
2338 return scope.Escape(Utils::StackFrameToLocal(obj)); 2217 return scope.Escape(Utils::StackFrameToLocal(obj));
(...skipping 19 matching lines...) Expand all
2358 int frame_limit, 2237 int frame_limit,
2359 StackTraceOptions options) { 2238 StackTraceOptions options) {
2360 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 2239 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
2361 ENTER_V8(i_isolate); 2240 ENTER_V8(i_isolate);
2362 i::Handle<i::JSArray> stackTrace = 2241 i::Handle<i::JSArray> stackTrace =
2363 i_isolate->CaptureCurrentStackTrace(frame_limit, options); 2242 i_isolate->CaptureCurrentStackTrace(frame_limit, options);
2364 return Utils::StackTraceToLocal(stackTrace); 2243 return Utils::StackTraceToLocal(stackTrace);
2365 } 2244 }
2366 2245
2367 2246
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 --- 2247 // --- S t a c k F r a m e ---
2375 2248
2376 int StackFrame::GetLineNumber() const { 2249 int StackFrame::GetLineNumber() const {
2377 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2250 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2378 ENTER_V8(isolate); 2251 ENTER_V8(isolate);
2379 i::HandleScope scope(isolate); 2252 i::HandleScope scope(isolate);
2380 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2253 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2381 i::Handle<i::Object> line = GetProperty(self, "lineNumber"); 2254 i::Handle<i::Object> line = GetProperty(self, "lineNumber");
2382 if (!line->IsSmi()) { 2255 if (!line->IsSmi()) {
2383 return Message::kNoLineNumberInfo; 2256 return Message::kNoLineNumberInfo;
(...skipping 1895 matching lines...) Expand 10 before | Expand all | Expand 10 after
4279 return kLineOffsetNotFound; 4152 return kLineOffsetNotFound;
4280 } 4153 }
4281 4154
4282 4155
4283 bool Function::IsBuiltin() const { 4156 bool Function::IsBuiltin() const {
4284 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); 4157 i::Handle<i::JSFunction> func = Utils::OpenHandle(this);
4285 return func->IsBuiltin(); 4158 return func->IsBuiltin();
4286 } 4159 }
4287 4160
4288 4161
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 { 4162 int Function::ScriptId() const {
4301 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); 4163 i::Handle<i::JSFunction> func = Utils::OpenHandle(this);
4302 if (!func->shared()->script()->IsScript()) return v8::Script::kNoScriptId; 4164 if (!func->shared()->script()->IsScript()) return v8::Script::kNoScriptId;
4303 i::Handle<i::Script> script(i::Script::cast(func->shared()->script())); 4165 i::Handle<i::Script> script(i::Script::cast(func->shared()->script()));
4304 return script->id()->value(); 4166 return script->id()->value();
4305 } 4167 }
4306 4168
4307 4169
4308 int String::Length() const { 4170 int String::Length() const {
4309 i::Handle<i::String> str = Utils::OpenHandle(this); 4171 i::Handle<i::String> str = Utils::OpenHandle(this);
(...skipping 1057 matching lines...) Expand 10 before | Expand all | Expand 10 after
5367 return Utils::ToLocal(token_handle); 5229 return Utils::ToLocal(token_handle);
5368 } 5230 }
5369 5231
5370 5232
5371 bool Context::HasOutOfMemoryException() { 5233 bool Context::HasOutOfMemoryException() {
5372 i::Handle<i::Context> env = Utils::OpenHandle(this); 5234 i::Handle<i::Context> env = Utils::OpenHandle(this);
5373 return env->has_out_of_memory(); 5235 return env->has_out_of_memory();
5374 } 5236 }
5375 5237
5376 5238
5377 bool Context::InContext() {
5378 return i::Isolate::Current()->context() != NULL;
5379 }
5380
5381
5382 v8::Isolate* Context::GetIsolate() { 5239 v8::Isolate* Context::GetIsolate() {
5383 i::Handle<i::Context> env = Utils::OpenHandle(this); 5240 i::Handle<i::Context> env = Utils::OpenHandle(this);
5384 return reinterpret_cast<Isolate*>(env->GetIsolate()); 5241 return reinterpret_cast<Isolate*>(env->GetIsolate());
5385 } 5242 }
5386 5243
5387 5244
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() { 5245 v8::Local<v8::Object> Context::Global() {
5410 i::Handle<i::Context> context = Utils::OpenHandle(this); 5246 i::Handle<i::Context> context = Utils::OpenHandle(this);
5411 i::Isolate* isolate = context->GetIsolate(); 5247 i::Isolate* isolate = context->GetIsolate();
5412 i::Handle<i::Object> global(context->global_proxy(), isolate); 5248 i::Handle<i::Object> global(context->global_proxy(), isolate);
5413 return Utils::ToLocal(i::Handle<i::JSObject>::cast(global)); 5249 return Utils::ToLocal(i::Handle<i::JSObject>::cast(global));
5414 } 5250 }
5415 5251
5416 5252
5417 void Context::DetachGlobal() { 5253 void Context::DetachGlobal() {
5418 i::Handle<i::Context> context = Utils::OpenHandle(this); 5254 i::Handle<i::Context> context = Utils::OpenHandle(this);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
5497 STATIC_ASSERT(sizeof(value) == sizeof(i::Address)); 5333 STATIC_ASSERT(sizeof(value) == sizeof(i::Address));
5498 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 5334 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
5499 EnsureInitializedForIsolate(i_isolate, "v8::External::New()"); 5335 EnsureInitializedForIsolate(i_isolate, "v8::External::New()");
5500 LOG_API(i_isolate, "External::New"); 5336 LOG_API(i_isolate, "External::New");
5501 ENTER_V8(i_isolate); 5337 ENTER_V8(i_isolate);
5502 i::Handle<i::JSObject> external = i_isolate->factory()->NewExternal(value); 5338 i::Handle<i::JSObject> external = i_isolate->factory()->NewExternal(value);
5503 return Utils::ExternalToLocal(external); 5339 return Utils::ExternalToLocal(external);
5504 } 5340 }
5505 5341
5506 5342
5507 Local<External> v8::External::New(void* value) {
5508 return v8::External::New(Isolate::GetCurrent(), value);
5509 }
5510
5511
5512 void* External::Value() const { 5343 void* External::Value() const {
5513 return ExternalValue(*Utils::OpenHandle(this)); 5344 return ExternalValue(*Utils::OpenHandle(this));
5514 } 5345 }
5515 5346
5516 5347
5517 Local<String> v8::String::Empty() { 5348 Local<String> v8::String::Empty() {
5518 i::Isolate* isolate = i::Isolate::Current(); 5349 i::Isolate* isolate = i::Isolate::Current();
5519 if (!EnsureInitializedForIsolate(isolate, "v8::String::Empty()")) { 5350 if (!EnsureInitializedForIsolate(isolate, "v8::String::Empty()")) {
5520 return v8::Local<String>(); 5351 return v8::Local<String>();
5521 } 5352 }
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
5693 EnsureInitializedForIsolate(i_isolate, "v8::String::NewExternal()"); 5524 EnsureInitializedForIsolate(i_isolate, "v8::String::NewExternal()");
5694 LOG_API(i_isolate, "String::NewExternal"); 5525 LOG_API(i_isolate, "String::NewExternal");
5695 ENTER_V8(i_isolate); 5526 ENTER_V8(i_isolate);
5696 CHECK(resource && resource->data()); 5527 CHECK(resource && resource->data());
5697 i::Handle<i::String> result = NewExternalStringHandle(i_isolate, resource); 5528 i::Handle<i::String> result = NewExternalStringHandle(i_isolate, resource);
5698 i_isolate->heap()->external_string_table()->AddString(*result); 5529 i_isolate->heap()->external_string_table()->AddString(*result);
5699 return Utils::ToLocal(result); 5530 return Utils::ToLocal(result);
5700 } 5531 }
5701 5532
5702 5533
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) { 5534 bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) {
5710 i::Handle<i::String> obj = Utils::OpenHandle(this); 5535 i::Handle<i::String> obj = Utils::OpenHandle(this);
5711 i::Isolate* isolate = obj->GetIsolate(); 5536 i::Isolate* isolate = obj->GetIsolate();
5712 if (i::StringShape(*obj).IsExternalTwoByte()) { 5537 if (i::StringShape(*obj).IsExternalTwoByte()) {
5713 return false; // Already an external string. 5538 return false; // Already an external string.
5714 } 5539 }
5715 ENTER_V8(isolate); 5540 ENTER_V8(isolate);
5716 if (isolate->string_tracker()->IsFreshUnusedString(obj)) { 5541 if (isolate->string_tracker()->IsFreshUnusedString(obj)) {
5717 return false; 5542 return false;
5718 } 5543 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
5750 LOG_API(i_isolate, "String::NewExternal"); 5575 LOG_API(i_isolate, "String::NewExternal");
5751 ENTER_V8(i_isolate); 5576 ENTER_V8(i_isolate);
5752 CHECK(resource && resource->data()); 5577 CHECK(resource && resource->data());
5753 i::Handle<i::String> result = 5578 i::Handle<i::String> result =
5754 NewExternalAsciiStringHandle(i_isolate, resource); 5579 NewExternalAsciiStringHandle(i_isolate, resource);
5755 i_isolate->heap()->external_string_table()->AddString(*result); 5580 i_isolate->heap()->external_string_table()->AddString(*result);
5756 return Utils::ToLocal(result); 5581 return Utils::ToLocal(result);
5757 } 5582 }
5758 5583
5759 5584
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( 5585 bool v8::String::MakeExternal(
5767 v8::String::ExternalAsciiStringResource* resource) { 5586 v8::String::ExternalAsciiStringResource* resource) {
5768 i::Handle<i::String> obj = Utils::OpenHandle(this); 5587 i::Handle<i::String> obj = Utils::OpenHandle(this);
5769 i::Isolate* isolate = obj->GetIsolate(); 5588 i::Isolate* isolate = obj->GetIsolate();
5770 if (i::StringShape(*obj).IsExternalTwoByte()) { 5589 if (i::StringShape(*obj).IsExternalTwoByte()) {
5771 return false; // Already an external string. 5590 return false; // Already an external string.
5772 } 5591 }
5773 ENTER_V8(isolate); 5592 ENTER_V8(isolate);
5774 if (isolate->string_tracker()->IsFreshUnusedString(obj)) { 5593 if (isolate->string_tracker()->IsFreshUnusedString(obj)) {
5775 return false; 5594 return false;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
5838 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 5657 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
5839 EnsureInitializedForIsolate(i_isolate, "v8::NumberObject::New()"); 5658 EnsureInitializedForIsolate(i_isolate, "v8::NumberObject::New()");
5840 LOG_API(i_isolate, "NumberObject::New"); 5659 LOG_API(i_isolate, "NumberObject::New");
5841 ENTER_V8(i_isolate); 5660 ENTER_V8(i_isolate);
5842 i::Handle<i::Object> number = i_isolate->factory()->NewNumber(value); 5661 i::Handle<i::Object> number = i_isolate->factory()->NewNumber(value);
5843 i::Handle<i::Object> obj = i_isolate->factory()->ToObject(number); 5662 i::Handle<i::Object> obj = i_isolate->factory()->ToObject(number);
5844 return Utils::ToLocal(obj); 5663 return Utils::ToLocal(obj);
5845 } 5664 }
5846 5665
5847 5666
5848 Local<v8::Value> v8::NumberObject::New(double value) {
5849 return New(Isolate::GetCurrent(), value);
5850 }
5851
5852
5853 double v8::NumberObject::ValueOf() const { 5667 double v8::NumberObject::ValueOf() const {
5854 i::Isolate* isolate = i::Isolate::Current(); 5668 i::Isolate* isolate = i::Isolate::Current();
5855 LOG_API(isolate, "NumberObject::NumberValue"); 5669 LOG_API(isolate, "NumberObject::NumberValue");
5856 i::Handle<i::Object> obj = Utils::OpenHandle(this); 5670 i::Handle<i::Object> obj = Utils::OpenHandle(this);
5857 i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj); 5671 i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj);
5858 return jsvalue->value()->Number(); 5672 return jsvalue->value()->Number();
5859 } 5673 }
5860 5674
5861 5675
5862 Local<v8::Value> v8::BooleanObject::New(bool value) { 5676 Local<v8::Value> v8::BooleanObject::New(bool value) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
5934 } 5748 }
5935 ENTER_V8(i_isolate); 5749 ENTER_V8(i_isolate);
5936 EXCEPTION_PREAMBLE(i_isolate); 5750 EXCEPTION_PREAMBLE(i_isolate);
5937 i::Handle<i::Object> obj = 5751 i::Handle<i::Object> obj =
5938 i::Execution::NewDate(i_isolate, time, &has_pending_exception); 5752 i::Execution::NewDate(i_isolate, time, &has_pending_exception);
5939 EXCEPTION_BAILOUT_CHECK(i_isolate, Local<v8::Value>()); 5753 EXCEPTION_BAILOUT_CHECK(i_isolate, Local<v8::Value>());
5940 return Utils::ToLocal(obj); 5754 return Utils::ToLocal(obj);
5941 } 5755 }
5942 5756
5943 5757
5944 Local<v8::Value> v8::Date::New(double time) {
5945 return New(Isolate::GetCurrent(), time);
5946 }
5947
5948
5949 double v8::Date::ValueOf() const { 5758 double v8::Date::ValueOf() const {
5950 i::Isolate* isolate = i::Isolate::Current(); 5759 i::Isolate* isolate = i::Isolate::Current();
5951 LOG_API(isolate, "Date::NumberValue"); 5760 LOG_API(isolate, "Date::NumberValue");
5952 i::Handle<i::Object> obj = Utils::OpenHandle(this); 5761 i::Handle<i::Object> obj = Utils::OpenHandle(this);
5953 i::Handle<i::JSDate> jsdate = i::Handle<i::JSDate>::cast(obj); 5762 i::Handle<i::JSDate> jsdate = i::Handle<i::JSDate>::cast(obj);
5954 return jsdate->value()->Number(); 5763 return jsdate->value()->Number();
5955 } 5764 }
5956 5765
5957 5766
5958 void v8::Date::DateTimeConfigurationChangeNotification(Isolate* isolate) { 5767 void v8::Date::DateTimeConfigurationChangeNotification(Isolate* isolate) {
(...skipping 25 matching lines...) Expand all
5984 bool caught_exception = false; 5793 bool caught_exception = false;
5985 i::Execution::TryCall(func, 5794 i::Execution::TryCall(func,
5986 i_isolate->js_builtins_object(), 5795 i_isolate->js_builtins_object(),
5987 0, 5796 0,
5988 NULL, 5797 NULL,
5989 &caught_exception); 5798 &caught_exception);
5990 } 5799 }
5991 } 5800 }
5992 5801
5993 5802
5994 void v8::Date::DateTimeConfigurationChangeNotification() {
5995 DateTimeConfigurationChangeNotification(Isolate::GetCurrent());
5996 }
5997
5998
5999 static i::Handle<i::String> RegExpFlagsToString(RegExp::Flags flags) { 5803 static i::Handle<i::String> RegExpFlagsToString(RegExp::Flags flags) {
6000 i::Isolate* isolate = i::Isolate::Current(); 5804 i::Isolate* isolate = i::Isolate::Current();
6001 uint8_t flags_buf[3]; 5805 uint8_t flags_buf[3];
6002 int num_flags = 0; 5806 int num_flags = 0;
6003 if ((flags & RegExp::kGlobal) != 0) flags_buf[num_flags++] = 'g'; 5807 if ((flags & RegExp::kGlobal) != 0) flags_buf[num_flags++] = 'g';
6004 if ((flags & RegExp::kMultiline) != 0) flags_buf[num_flags++] = 'm'; 5808 if ((flags & RegExp::kMultiline) != 0) flags_buf[num_flags++] = 'm';
6005 if ((flags & RegExp::kIgnoreCase) != 0) flags_buf[num_flags++] = 'i'; 5809 if ((flags & RegExp::kIgnoreCase) != 0) flags_buf[num_flags++] = 'i';
6006 ASSERT(num_flags <= static_cast<int>(ARRAY_SIZE(flags_buf))); 5810 ASSERT(num_flags <= static_cast<int>(ARRAY_SIZE(flags_buf)));
6007 return isolate->factory()->InternalizeOneByteString( 5811 return isolate->factory()->InternalizeOneByteString(
6008 i::Vector<const uint8_t>(flags_buf, num_flags)); 5812 i::Vector<const uint8_t>(flags_buf, num_flags));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
6054 ENTER_V8(i_isolate); 5858 ENTER_V8(i_isolate);
6055 int real_length = length > 0 ? length : 0; 5859 int real_length = length > 0 ? length : 0;
6056 i::Handle<i::JSArray> obj = i_isolate->factory()->NewJSArray(real_length); 5860 i::Handle<i::JSArray> obj = i_isolate->factory()->NewJSArray(real_length);
6057 i::Handle<i::Object> length_obj = 5861 i::Handle<i::Object> length_obj =
6058 i_isolate->factory()->NewNumberFromInt(real_length); 5862 i_isolate->factory()->NewNumberFromInt(real_length);
6059 obj->set_length(*length_obj); 5863 obj->set_length(*length_obj);
6060 return Utils::ToLocal(obj); 5864 return Utils::ToLocal(obj);
6061 } 5865 }
6062 5866
6063 5867
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 { 5868 uint32_t v8::Array::Length() const {
6070 i::Handle<i::JSArray> obj = Utils::OpenHandle(this); 5869 i::Handle<i::JSArray> obj = Utils::OpenHandle(this);
6071 i::Object* length = obj->length(); 5870 i::Object* length = obj->length();
6072 if (length->IsSmi()) { 5871 if (length->IsSmi()) {
6073 return i::Smi::cast(length)->value(); 5872 return i::Smi::cast(length)->value();
6074 } else { 5873 } else {
6075 return static_cast<uint32_t>(length->Number()); 5874 return static_cast<uint32_t>(length->Number());
6076 } 5875 }
6077 } 5876 }
6078 5877
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
6154 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(size_t)"); 5953 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(size_t)");
6155 LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)"); 5954 LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)");
6156 ENTER_V8(i_isolate); 5955 ENTER_V8(i_isolate);
6157 i::Handle<i::JSArrayBuffer> obj = 5956 i::Handle<i::JSArrayBuffer> obj =
6158 i_isolate->factory()->NewJSArrayBuffer(); 5957 i_isolate->factory()->NewJSArrayBuffer();
6159 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length); 5958 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length);
6160 return Utils::ToLocal(obj); 5959 return Utils::ToLocal(obj);
6161 } 5960 }
6162 5961
6163 5962
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, 5963 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, void* data,
6170 size_t byte_length) { 5964 size_t byte_length) {
6171 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 5965 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
6172 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); 5966 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(void*, size_t)");
6173 LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); 5967 LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)");
6174 ENTER_V8(i_isolate); 5968 ENTER_V8(i_isolate);
6175 i::Handle<i::JSArrayBuffer> obj = 5969 i::Handle<i::JSArrayBuffer> obj =
6176 i_isolate->factory()->NewJSArrayBuffer(); 5970 i_isolate->factory()->NewJSArrayBuffer();
6177 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length); 5971 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length);
6178 return Utils::ToLocal(obj); 5972 return Utils::ToLocal(obj);
6179 } 5973 }
6180 5974
6181 5975
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() { 5976 Local<ArrayBuffer> v8::ArrayBufferView::Buffer() {
6188 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); 5977 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this);
6189 ASSERT(obj->buffer()->IsJSArrayBuffer()); 5978 ASSERT(obj->buffer()->IsJSArrayBuffer());
6190 i::Handle<i::JSArrayBuffer> buffer(i::JSArrayBuffer::cast(obj->buffer())); 5979 i::Handle<i::JSArrayBuffer> buffer(i::JSArrayBuffer::cast(obj->buffer()));
6191 return Utils::ToLocal(buffer); 5980 return Utils::ToLocal(buffer);
6192 } 5981 }
6193 5982
6194 5983
6195 size_t v8::ArrayBufferView::ByteOffset() { 5984 size_t v8::ArrayBufferView::ByteOffset() {
6196 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); 5985 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this);
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
6509 } 6298 }
6510 6299
6511 6300
6512 int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( 6301 int64_t Isolate::AdjustAmountOfExternalAllocatedMemory(
6513 int64_t change_in_bytes) { 6302 int64_t change_in_bytes) {
6514 i::Heap* heap = reinterpret_cast<i::Isolate*>(this)->heap(); 6303 i::Heap* heap = reinterpret_cast<i::Isolate*>(this)->heap();
6515 return heap->AdjustAmountOfExternalAllocatedMemory(change_in_bytes); 6304 return heap->AdjustAmountOfExternalAllocatedMemory(change_in_bytes);
6516 } 6305 }
6517 6306
6518 6307
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() { 6308 HeapProfiler* Isolate::GetHeapProfiler() {
6530 i::HeapProfiler* heap_profiler = 6309 i::HeapProfiler* heap_profiler =
6531 reinterpret_cast<i::Isolate*>(this)->heap_profiler(); 6310 reinterpret_cast<i::Isolate*>(this)->heap_profiler();
6532 return reinterpret_cast<HeapProfiler*>(heap_profiler); 6311 return reinterpret_cast<HeapProfiler*>(heap_profiler);
6533 } 6312 }
6534 6313
6535 6314
6536 CpuProfiler* Isolate::GetCpuProfiler() { 6315 CpuProfiler* Isolate::GetCpuProfiler() {
6537 i::CpuProfiler* cpu_profiler = 6316 i::CpuProfiler* cpu_profiler =
6538 reinterpret_cast<i::Isolate*>(this)->cpu_profiler(); 6317 reinterpret_cast<i::Isolate*>(this)->cpu_profiler();
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
6791 str_ = i::NewArray<char>(length_ + 1); 6570 str_ = i::NewArray<char>(length_ + 1);
6792 str->WriteUtf8(str_); 6571 str->WriteUtf8(str_);
6793 } 6572 }
6794 6573
6795 6574
6796 String::Utf8Value::~Utf8Value() { 6575 String::Utf8Value::~Utf8Value() {
6797 i::DeleteArray(str_); 6576 i::DeleteArray(str_);
6798 } 6577 }
6799 6578
6800 6579
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) 6580 String::Value::Value(v8::Handle<v8::Value> obj)
6823 : str_(NULL), length_(0) { 6581 : str_(NULL), length_(0) {
6824 i::Isolate* isolate = i::Isolate::Current(); 6582 i::Isolate* isolate = i::Isolate::Current();
6825 if (obj.IsEmpty()) return; 6583 if (obj.IsEmpty()) return;
6826 ENTER_V8(isolate); 6584 ENTER_V8(isolate);
6827 i::HandleScope scope(isolate); 6585 i::HandleScope scope(isolate);
6828 TryCatch try_catch; 6586 TryCatch try_catch;
6829 Handle<String> str = obj->ToString(); 6587 Handle<String> str = obj->ToString();
6830 if (str.IsEmpty()) return; 6588 if (str.IsEmpty()) return;
6831 length_ = str->Length(); 6589 length_ = str->Length();
(...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after
7780 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 7538 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
7781 Address callback_address = 7539 Address callback_address =
7782 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 7540 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
7783 VMState<EXTERNAL> state(isolate); 7541 VMState<EXTERNAL> state(isolate);
7784 ExternalCallbackScope call_scope(isolate, callback_address); 7542 ExternalCallbackScope call_scope(isolate, callback_address);
7785 callback(info); 7543 callback(info);
7786 } 7544 }
7787 7545
7788 7546
7789 } } // namespace v8::internal 7547 } } // namespace v8::internal
OLDNEW
« include/v8.h ('K') | « src/allocation-tracker.cc ('k') | src/debug.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698