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

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: Rebased. 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
« no previous file with comments | « src/allocation-tracker.cc ('k') | src/debug.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 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 1056 matching lines...) Expand 10 before | Expand all | Expand 10 after
5366 return Utils::ToLocal(token_handle); 5228 return Utils::ToLocal(token_handle);
5367 } 5229 }
5368 5230
5369 5231
5370 bool Context::HasOutOfMemoryException() { 5232 bool Context::HasOutOfMemoryException() {
5371 i::Handle<i::Context> env = Utils::OpenHandle(this); 5233 i::Handle<i::Context> env = Utils::OpenHandle(this);
5372 return env->has_out_of_memory(); 5234 return env->has_out_of_memory();
5373 } 5235 }
5374 5236
5375 5237
5376 bool Context::InContext() {
5377 return i::Isolate::Current()->context() != NULL;
5378 }
5379
5380
5381 v8::Isolate* Context::GetIsolate() { 5238 v8::Isolate* Context::GetIsolate() {
5382 i::Handle<i::Context> env = Utils::OpenHandle(this); 5239 i::Handle<i::Context> env = Utils::OpenHandle(this);
5383 return reinterpret_cast<Isolate*>(env->GetIsolate()); 5240 return reinterpret_cast<Isolate*>(env->GetIsolate());
5384 } 5241 }
5385 5242
5386 5243
5387 v8::Local<v8::Context> Context::GetEntered() {
5388 i::Isolate* isolate = i::Isolate::Current();
5389 if (!EnsureInitializedForIsolate(isolate, "v8::Context::GetEntered()")) {
5390 return Local<Context>();
5391 }
5392 return reinterpret_cast<Isolate*>(isolate)->GetEnteredContext();
5393 }
5394
5395
5396 v8::Local<v8::Context> Context::GetCurrent() {
5397 i::Isolate* isolate = i::Isolate::Current();
5398 return reinterpret_cast<Isolate*>(isolate)->GetCurrentContext();
5399 }
5400
5401
5402 v8::Local<v8::Context> Context::GetCalling() {
5403 i::Isolate* isolate = i::Isolate::Current();
5404 return reinterpret_cast<Isolate*>(isolate)->GetCallingContext();
5405 }
5406
5407
5408 v8::Local<v8::Object> Context::Global() { 5244 v8::Local<v8::Object> Context::Global() {
5409 i::Handle<i::Context> context = Utils::OpenHandle(this); 5245 i::Handle<i::Context> context = Utils::OpenHandle(this);
5410 i::Isolate* isolate = context->GetIsolate(); 5246 i::Isolate* isolate = context->GetIsolate();
5411 i::Handle<i::Object> global(context->global_proxy(), isolate); 5247 i::Handle<i::Object> global(context->global_proxy(), isolate);
5412 // TODO(dcarney): This should always return the global proxy 5248 // TODO(dcarney): This should always return the global proxy
5413 // but can't presently as calls to GetProtoype will return the wrong result. 5249 // but can't presently as calls to GetProtoype will return the wrong result.
5414 if (i::Handle<i::JSGlobalProxy>::cast( 5250 if (i::Handle<i::JSGlobalProxy>::cast(
5415 global)->IsDetachedFrom(context->global_object())) { 5251 global)->IsDetachedFrom(context->global_object())) {
5416 global = i::Handle<i::Object>(context->global_object(), isolate); 5252 global = i::Handle<i::Object>(context->global_object(), isolate);
5417 } 5253 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
5492 STATIC_ASSERT(sizeof(value) == sizeof(i::Address)); 5328 STATIC_ASSERT(sizeof(value) == sizeof(i::Address));
5493 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 5329 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
5494 EnsureInitializedForIsolate(i_isolate, "v8::External::New()"); 5330 EnsureInitializedForIsolate(i_isolate, "v8::External::New()");
5495 LOG_API(i_isolate, "External::New"); 5331 LOG_API(i_isolate, "External::New");
5496 ENTER_V8(i_isolate); 5332 ENTER_V8(i_isolate);
5497 i::Handle<i::JSObject> external = i_isolate->factory()->NewExternal(value); 5333 i::Handle<i::JSObject> external = i_isolate->factory()->NewExternal(value);
5498 return Utils::ExternalToLocal(external); 5334 return Utils::ExternalToLocal(external);
5499 } 5335 }
5500 5336
5501 5337
5502 Local<External> v8::External::New(void* value) {
5503 return v8::External::New(Isolate::GetCurrent(), value);
5504 }
5505
5506
5507 void* External::Value() const { 5338 void* External::Value() const {
5508 return ExternalValue(*Utils::OpenHandle(this)); 5339 return ExternalValue(*Utils::OpenHandle(this));
5509 } 5340 }
5510 5341
5511 5342
5512 Local<String> v8::String::Empty() { 5343 Local<String> v8::String::Empty() {
5513 i::Isolate* isolate = i::Isolate::Current(); 5344 i::Isolate* isolate = i::Isolate::Current();
5514 if (!EnsureInitializedForIsolate(isolate, "v8::String::Empty()")) { 5345 if (!EnsureInitializedForIsolate(isolate, "v8::String::Empty()")) {
5515 return v8::Local<String>(); 5346 return v8::Local<String>();
5516 } 5347 }
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
5688 EnsureInitializedForIsolate(i_isolate, "v8::String::NewExternal()"); 5519 EnsureInitializedForIsolate(i_isolate, "v8::String::NewExternal()");
5689 LOG_API(i_isolate, "String::NewExternal"); 5520 LOG_API(i_isolate, "String::NewExternal");
5690 ENTER_V8(i_isolate); 5521 ENTER_V8(i_isolate);
5691 CHECK(resource && resource->data()); 5522 CHECK(resource && resource->data());
5692 i::Handle<i::String> result = NewExternalStringHandle(i_isolate, resource); 5523 i::Handle<i::String> result = NewExternalStringHandle(i_isolate, resource);
5693 i_isolate->heap()->external_string_table()->AddString(*result); 5524 i_isolate->heap()->external_string_table()->AddString(*result);
5694 return Utils::ToLocal(result); 5525 return Utils::ToLocal(result);
5695 } 5526 }
5696 5527
5697 5528
5698 Local<String> v8::String::NewExternal(
5699 v8::String::ExternalStringResource* resource) {
5700 return NewExternal(Isolate::GetCurrent(), resource);
5701 }
5702
5703
5704 bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) { 5529 bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) {
5705 i::Handle<i::String> obj = Utils::OpenHandle(this); 5530 i::Handle<i::String> obj = Utils::OpenHandle(this);
5706 i::Isolate* isolate = obj->GetIsolate(); 5531 i::Isolate* isolate = obj->GetIsolate();
5707 if (i::StringShape(*obj).IsExternalTwoByte()) { 5532 if (i::StringShape(*obj).IsExternalTwoByte()) {
5708 return false; // Already an external string. 5533 return false; // Already an external string.
5709 } 5534 }
5710 ENTER_V8(isolate); 5535 ENTER_V8(isolate);
5711 if (isolate->string_tracker()->IsFreshUnusedString(obj)) { 5536 if (isolate->string_tracker()->IsFreshUnusedString(obj)) {
5712 return false; 5537 return false;
5713 } 5538 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
5745 LOG_API(i_isolate, "String::NewExternal"); 5570 LOG_API(i_isolate, "String::NewExternal");
5746 ENTER_V8(i_isolate); 5571 ENTER_V8(i_isolate);
5747 CHECK(resource && resource->data()); 5572 CHECK(resource && resource->data());
5748 i::Handle<i::String> result = 5573 i::Handle<i::String> result =
5749 NewExternalAsciiStringHandle(i_isolate, resource); 5574 NewExternalAsciiStringHandle(i_isolate, resource);
5750 i_isolate->heap()->external_string_table()->AddString(*result); 5575 i_isolate->heap()->external_string_table()->AddString(*result);
5751 return Utils::ToLocal(result); 5576 return Utils::ToLocal(result);
5752 } 5577 }
5753 5578
5754 5579
5755 Local<String> v8::String::NewExternal(
5756 v8::String::ExternalAsciiStringResource* resource) {
5757 return NewExternal(Isolate::GetCurrent(), resource);
5758 }
5759
5760
5761 bool v8::String::MakeExternal( 5580 bool v8::String::MakeExternal(
5762 v8::String::ExternalAsciiStringResource* resource) { 5581 v8::String::ExternalAsciiStringResource* resource) {
5763 i::Handle<i::String> obj = Utils::OpenHandle(this); 5582 i::Handle<i::String> obj = Utils::OpenHandle(this);
5764 i::Isolate* isolate = obj->GetIsolate(); 5583 i::Isolate* isolate = obj->GetIsolate();
5765 if (i::StringShape(*obj).IsExternalTwoByte()) { 5584 if (i::StringShape(*obj).IsExternalTwoByte()) {
5766 return false; // Already an external string. 5585 return false; // Already an external string.
5767 } 5586 }
5768 ENTER_V8(isolate); 5587 ENTER_V8(isolate);
5769 if (isolate->string_tracker()->IsFreshUnusedString(obj)) { 5588 if (isolate->string_tracker()->IsFreshUnusedString(obj)) {
5770 return false; 5589 return false;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
5833 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 5652 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
5834 EnsureInitializedForIsolate(i_isolate, "v8::NumberObject::New()"); 5653 EnsureInitializedForIsolate(i_isolate, "v8::NumberObject::New()");
5835 LOG_API(i_isolate, "NumberObject::New"); 5654 LOG_API(i_isolate, "NumberObject::New");
5836 ENTER_V8(i_isolate); 5655 ENTER_V8(i_isolate);
5837 i::Handle<i::Object> number = i_isolate->factory()->NewNumber(value); 5656 i::Handle<i::Object> number = i_isolate->factory()->NewNumber(value);
5838 i::Handle<i::Object> obj = i_isolate->factory()->ToObject(number); 5657 i::Handle<i::Object> obj = i_isolate->factory()->ToObject(number);
5839 return Utils::ToLocal(obj); 5658 return Utils::ToLocal(obj);
5840 } 5659 }
5841 5660
5842 5661
5843 Local<v8::Value> v8::NumberObject::New(double value) {
5844 return New(Isolate::GetCurrent(), value);
5845 }
5846
5847
5848 double v8::NumberObject::ValueOf() const { 5662 double v8::NumberObject::ValueOf() const {
5849 i::Isolate* isolate = i::Isolate::Current(); 5663 i::Isolate* isolate = i::Isolate::Current();
5850 LOG_API(isolate, "NumberObject::NumberValue"); 5664 LOG_API(isolate, "NumberObject::NumberValue");
5851 i::Handle<i::Object> obj = Utils::OpenHandle(this); 5665 i::Handle<i::Object> obj = Utils::OpenHandle(this);
5852 i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj); 5666 i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj);
5853 return jsvalue->value()->Number(); 5667 return jsvalue->value()->Number();
5854 } 5668 }
5855 5669
5856 5670
5857 Local<v8::Value> v8::BooleanObject::New(bool value) { 5671 Local<v8::Value> v8::BooleanObject::New(bool value) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
5929 } 5743 }
5930 ENTER_V8(i_isolate); 5744 ENTER_V8(i_isolate);
5931 EXCEPTION_PREAMBLE(i_isolate); 5745 EXCEPTION_PREAMBLE(i_isolate);
5932 i::Handle<i::Object> obj = 5746 i::Handle<i::Object> obj =
5933 i::Execution::NewDate(i_isolate, time, &has_pending_exception); 5747 i::Execution::NewDate(i_isolate, time, &has_pending_exception);
5934 EXCEPTION_BAILOUT_CHECK(i_isolate, Local<v8::Value>()); 5748 EXCEPTION_BAILOUT_CHECK(i_isolate, Local<v8::Value>());
5935 return Utils::ToLocal(obj); 5749 return Utils::ToLocal(obj);
5936 } 5750 }
5937 5751
5938 5752
5939 Local<v8::Value> v8::Date::New(double time) {
5940 return New(Isolate::GetCurrent(), time);
5941 }
5942
5943
5944 double v8::Date::ValueOf() const { 5753 double v8::Date::ValueOf() const {
5945 i::Isolate* isolate = i::Isolate::Current(); 5754 i::Isolate* isolate = i::Isolate::Current();
5946 LOG_API(isolate, "Date::NumberValue"); 5755 LOG_API(isolate, "Date::NumberValue");
5947 i::Handle<i::Object> obj = Utils::OpenHandle(this); 5756 i::Handle<i::Object> obj = Utils::OpenHandle(this);
5948 i::Handle<i::JSDate> jsdate = i::Handle<i::JSDate>::cast(obj); 5757 i::Handle<i::JSDate> jsdate = i::Handle<i::JSDate>::cast(obj);
5949 return jsdate->value()->Number(); 5758 return jsdate->value()->Number();
5950 } 5759 }
5951 5760
5952 5761
5953 void v8::Date::DateTimeConfigurationChangeNotification(Isolate* isolate) { 5762 void v8::Date::DateTimeConfigurationChangeNotification(Isolate* isolate) {
(...skipping 25 matching lines...) Expand all
5979 bool caught_exception = false; 5788 bool caught_exception = false;
5980 i::Execution::TryCall(func, 5789 i::Execution::TryCall(func,
5981 i_isolate->js_builtins_object(), 5790 i_isolate->js_builtins_object(),
5982 0, 5791 0,
5983 NULL, 5792 NULL,
5984 &caught_exception); 5793 &caught_exception);
5985 } 5794 }
5986 } 5795 }
5987 5796
5988 5797
5989 void v8::Date::DateTimeConfigurationChangeNotification() {
5990 DateTimeConfigurationChangeNotification(Isolate::GetCurrent());
5991 }
5992
5993
5994 static i::Handle<i::String> RegExpFlagsToString(RegExp::Flags flags) { 5798 static i::Handle<i::String> RegExpFlagsToString(RegExp::Flags flags) {
5995 i::Isolate* isolate = i::Isolate::Current(); 5799 i::Isolate* isolate = i::Isolate::Current();
5996 uint8_t flags_buf[3]; 5800 uint8_t flags_buf[3];
5997 int num_flags = 0; 5801 int num_flags = 0;
5998 if ((flags & RegExp::kGlobal) != 0) flags_buf[num_flags++] = 'g'; 5802 if ((flags & RegExp::kGlobal) != 0) flags_buf[num_flags++] = 'g';
5999 if ((flags & RegExp::kMultiline) != 0) flags_buf[num_flags++] = 'm'; 5803 if ((flags & RegExp::kMultiline) != 0) flags_buf[num_flags++] = 'm';
6000 if ((flags & RegExp::kIgnoreCase) != 0) flags_buf[num_flags++] = 'i'; 5804 if ((flags & RegExp::kIgnoreCase) != 0) flags_buf[num_flags++] = 'i';
6001 ASSERT(num_flags <= static_cast<int>(ARRAY_SIZE(flags_buf))); 5805 ASSERT(num_flags <= static_cast<int>(ARRAY_SIZE(flags_buf)));
6002 return isolate->factory()->InternalizeOneByteString( 5806 return isolate->factory()->InternalizeOneByteString(
6003 i::Vector<const uint8_t>(flags_buf, num_flags)); 5807 i::Vector<const uint8_t>(flags_buf, num_flags));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
6049 ENTER_V8(i_isolate); 5853 ENTER_V8(i_isolate);
6050 int real_length = length > 0 ? length : 0; 5854 int real_length = length > 0 ? length : 0;
6051 i::Handle<i::JSArray> obj = i_isolate->factory()->NewJSArray(real_length); 5855 i::Handle<i::JSArray> obj = i_isolate->factory()->NewJSArray(real_length);
6052 i::Handle<i::Object> length_obj = 5856 i::Handle<i::Object> length_obj =
6053 i_isolate->factory()->NewNumberFromInt(real_length); 5857 i_isolate->factory()->NewNumberFromInt(real_length);
6054 obj->set_length(*length_obj); 5858 obj->set_length(*length_obj);
6055 return Utils::ToLocal(obj); 5859 return Utils::ToLocal(obj);
6056 } 5860 }
6057 5861
6058 5862
6059 Local<v8::Array> v8::Array::New(int length) {
6060 return New(Isolate::GetCurrent(), length);
6061 }
6062
6063
6064 uint32_t v8::Array::Length() const { 5863 uint32_t v8::Array::Length() const {
6065 i::Handle<i::JSArray> obj = Utils::OpenHandle(this); 5864 i::Handle<i::JSArray> obj = Utils::OpenHandle(this);
6066 i::Object* length = obj->length(); 5865 i::Object* length = obj->length();
6067 if (length->IsSmi()) { 5866 if (length->IsSmi()) {
6068 return i::Smi::cast(length)->value(); 5867 return i::Smi::cast(length)->value();
6069 } else { 5868 } else {
6070 return static_cast<uint32_t>(length->Number()); 5869 return static_cast<uint32_t>(length->Number());
6071 } 5870 }
6072 } 5871 }
6073 5872
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
6149 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(size_t)"); 5948 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(size_t)");
6150 LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)"); 5949 LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)");
6151 ENTER_V8(i_isolate); 5950 ENTER_V8(i_isolate);
6152 i::Handle<i::JSArrayBuffer> obj = 5951 i::Handle<i::JSArrayBuffer> obj =
6153 i_isolate->factory()->NewJSArrayBuffer(); 5952 i_isolate->factory()->NewJSArrayBuffer();
6154 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length); 5953 i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length);
6155 return Utils::ToLocal(obj); 5954 return Utils::ToLocal(obj);
6156 } 5955 }
6157 5956
6158 5957
6159 Local<ArrayBuffer> v8::ArrayBuffer::New(size_t byte_length) {
6160 return New(Isolate::GetCurrent(), byte_length);
6161 }
6162
6163
6164 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, void* data, 5958 Local<ArrayBuffer> v8::ArrayBuffer::New(Isolate* isolate, void* data,
6165 size_t byte_length) { 5959 size_t byte_length) {
6166 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 5960 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
6167 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); 5961 EnsureInitializedForIsolate(i_isolate, "v8::ArrayBuffer::New(void*, size_t)");
6168 LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)"); 5962 LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)");
6169 ENTER_V8(i_isolate); 5963 ENTER_V8(i_isolate);
6170 i::Handle<i::JSArrayBuffer> obj = 5964 i::Handle<i::JSArrayBuffer> obj =
6171 i_isolate->factory()->NewJSArrayBuffer(); 5965 i_isolate->factory()->NewJSArrayBuffer();
6172 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length); 5966 i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length);
6173 return Utils::ToLocal(obj); 5967 return Utils::ToLocal(obj);
6174 } 5968 }
6175 5969
6176 5970
6177 Local<ArrayBuffer> v8::ArrayBuffer::New(void* data, size_t byte_length) {
6178 return New(Isolate::GetCurrent(), data, byte_length);
6179 }
6180
6181
6182 Local<ArrayBuffer> v8::ArrayBufferView::Buffer() { 5971 Local<ArrayBuffer> v8::ArrayBufferView::Buffer() {
6183 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); 5972 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this);
6184 ASSERT(obj->buffer()->IsJSArrayBuffer()); 5973 ASSERT(obj->buffer()->IsJSArrayBuffer());
6185 i::Handle<i::JSArrayBuffer> buffer(i::JSArrayBuffer::cast(obj->buffer())); 5974 i::Handle<i::JSArrayBuffer> buffer(i::JSArrayBuffer::cast(obj->buffer()));
6186 return Utils::ToLocal(buffer); 5975 return Utils::ToLocal(buffer);
6187 } 5976 }
6188 5977
6189 5978
6190 size_t v8::ArrayBufferView::ByteOffset() { 5979 size_t v8::ArrayBufferView::ByteOffset() {
6191 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this); 5980 i::Handle<i::JSArrayBufferView> obj = Utils::OpenHandle(this);
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
6504 } 6293 }
6505 6294
6506 6295
6507 int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( 6296 int64_t Isolate::AdjustAmountOfExternalAllocatedMemory(
6508 int64_t change_in_bytes) { 6297 int64_t change_in_bytes) {
6509 i::Heap* heap = reinterpret_cast<i::Isolate*>(this)->heap(); 6298 i::Heap* heap = reinterpret_cast<i::Isolate*>(this)->heap();
6510 return heap->AdjustAmountOfExternalAllocatedMemory(change_in_bytes); 6299 return heap->AdjustAmountOfExternalAllocatedMemory(change_in_bytes);
6511 } 6300 }
6512 6301
6513 6302
6514 int64_t V8::AdjustAmountOfExternalAllocatedMemory(int64_t change_in_bytes) {
6515 i::Isolate* isolate = i::Isolate::UncheckedCurrent();
6516 if (isolate == NULL || !isolate->IsInitialized()) {
6517 return 0;
6518 }
6519 Isolate* isolate_ext = reinterpret_cast<Isolate*>(isolate);
6520 return isolate_ext->AdjustAmountOfExternalAllocatedMemory(change_in_bytes);
6521 }
6522
6523
6524 HeapProfiler* Isolate::GetHeapProfiler() { 6303 HeapProfiler* Isolate::GetHeapProfiler() {
6525 i::HeapProfiler* heap_profiler = 6304 i::HeapProfiler* heap_profiler =
6526 reinterpret_cast<i::Isolate*>(this)->heap_profiler(); 6305 reinterpret_cast<i::Isolate*>(this)->heap_profiler();
6527 return reinterpret_cast<HeapProfiler*>(heap_profiler); 6306 return reinterpret_cast<HeapProfiler*>(heap_profiler);
6528 } 6307 }
6529 6308
6530 6309
6531 CpuProfiler* Isolate::GetCpuProfiler() { 6310 CpuProfiler* Isolate::GetCpuProfiler() {
6532 i::CpuProfiler* cpu_profiler = 6311 i::CpuProfiler* cpu_profiler =
6533 reinterpret_cast<i::Isolate*>(this)->cpu_profiler(); 6312 reinterpret_cast<i::Isolate*>(this)->cpu_profiler();
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
6786 str_ = i::NewArray<char>(length_ + 1); 6565 str_ = i::NewArray<char>(length_ + 1);
6787 str->WriteUtf8(str_); 6566 str->WriteUtf8(str_);
6788 } 6567 }
6789 6568
6790 6569
6791 String::Utf8Value::~Utf8Value() { 6570 String::Utf8Value::~Utf8Value() {
6792 i::DeleteArray(str_); 6571 i::DeleteArray(str_);
6793 } 6572 }
6794 6573
6795 6574
6796 String::AsciiValue::AsciiValue(v8::Handle<v8::Value> obj)
6797 : str_(NULL), length_(0) {
6798 i::Isolate* isolate = i::Isolate::Current();
6799 if (obj.IsEmpty()) return;
6800 ENTER_V8(isolate);
6801 i::HandleScope scope(isolate);
6802 TryCatch try_catch;
6803 Handle<String> str = obj->ToString();
6804 if (str.IsEmpty()) return;
6805 length_ = str->Utf8Length();
6806 str_ = i::NewArray<char>(length_ + 1);
6807 str->WriteUtf8(str_);
6808 ASSERT(i::String::NonAsciiStart(str_, length_) >= length_);
6809 }
6810
6811
6812 String::AsciiValue::~AsciiValue() {
6813 i::DeleteArray(str_);
6814 }
6815
6816
6817 String::Value::Value(v8::Handle<v8::Value> obj) 6575 String::Value::Value(v8::Handle<v8::Value> obj)
6818 : str_(NULL), length_(0) { 6576 : str_(NULL), length_(0) {
6819 i::Isolate* isolate = i::Isolate::Current(); 6577 i::Isolate* isolate = i::Isolate::Current();
6820 if (obj.IsEmpty()) return; 6578 if (obj.IsEmpty()) return;
6821 ENTER_V8(isolate); 6579 ENTER_V8(isolate);
6822 i::HandleScope scope(isolate); 6580 i::HandleScope scope(isolate);
6823 TryCatch try_catch; 6581 TryCatch try_catch;
6824 Handle<String> str = obj->ToString(); 6582 Handle<String> str = obj->ToString();
6825 if (str.IsEmpty()) return; 6583 if (str.IsEmpty()) return;
6826 length_ = str->Length(); 6584 length_ = str->Length();
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
7520 GetMemorySizeUsedByProfiler(); 7278 GetMemorySizeUsedByProfiler();
7521 } 7279 }
7522 7280
7523 7281
7524 void HeapProfiler::SetRetainedObjectInfo(UniqueId id, 7282 void HeapProfiler::SetRetainedObjectInfo(UniqueId id,
7525 RetainedObjectInfo* info) { 7283 RetainedObjectInfo* info) {
7526 reinterpret_cast<i::HeapProfiler*>(this)->SetRetainedObjectInfo(id, info); 7284 reinterpret_cast<i::HeapProfiler*>(this)->SetRetainedObjectInfo(id, info);
7527 } 7285 }
7528 7286
7529 7287
7530 void HeapProfiler::StartRecordingHeapAllocations() {
7531 reinterpret_cast<i::HeapProfiler*>(this)->StartHeapObjectsTracking(true);
7532 }
7533
7534
7535 void HeapProfiler::StopRecordingHeapAllocations() {
7536 reinterpret_cast<i::HeapProfiler*>(this)->StopHeapObjectsTracking();
7537 }
7538
7539
7540 v8::Testing::StressType internal::Testing::stress_type_ = 7288 v8::Testing::StressType internal::Testing::stress_type_ =
7541 v8::Testing::kStressTypeOpt; 7289 v8::Testing::kStressTypeOpt;
7542 7290
7543 7291
7544 void Testing::SetStressRunType(Testing::StressType type) { 7292 void Testing::SetStressRunType(Testing::StressType type) {
7545 internal::Testing::set_stress_type(type); 7293 internal::Testing::set_stress_type(type);
7546 } 7294 }
7547 7295
7548 7296
7549 int Testing::GetStressRuns() { 7297 int Testing::GetStressRuns() {
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
7771 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 7519 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
7772 Address callback_address = 7520 Address callback_address =
7773 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 7521 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
7774 VMState<EXTERNAL> state(isolate); 7522 VMState<EXTERNAL> state(isolate);
7775 ExternalCallbackScope call_scope(isolate, callback_address); 7523 ExternalCallbackScope call_scope(isolate, callback_address);
7776 callback(info); 7524 callback(info);
7777 } 7525 }
7778 7526
7779 7527
7780 } } // namespace v8::internal 7528 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/allocation-tracker.cc ('k') | src/debug.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698