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

Side by Side Diff: src/objects.cc

Issue 2345823002: [modules] Turn JSModule into Module. (Closed)
Patch Set: Address comments. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/objects.h ('k') | src/objects-body-descriptors-inl.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/objects.h" 5 #include "src/objects.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <iomanip> 8 #include <iomanip>
9 #include <memory> 9 #include <memory>
10 #include <sstream> 10 #include <sstream>
(...skipping 2462 matching lines...) Expand 10 before | Expand all | Expand 10 after
2473 } 2473 }
2474 accumulator->Add(" (SharedFunctionInfo %p)", 2474 accumulator->Add(" (SharedFunctionInfo %p)",
2475 reinterpret_cast<void*>(function->shared())); 2475 reinterpret_cast<void*>(function->shared()));
2476 accumulator->Put('>'); 2476 accumulator->Put('>');
2477 break; 2477 break;
2478 } 2478 }
2479 case JS_GENERATOR_OBJECT_TYPE: { 2479 case JS_GENERATOR_OBJECT_TYPE: {
2480 accumulator->Add("<JS Generator>"); 2480 accumulator->Add("<JS Generator>");
2481 break; 2481 break;
2482 } 2482 }
2483 case JS_MODULE_TYPE: {
2484 accumulator->Add("<JS Module>");
2485 break;
2486 }
2487 // All other JSObjects are rather similar to each other (JSObject, 2483 // All other JSObjects are rather similar to each other (JSObject,
2488 // JSGlobalProxy, JSGlobalObject, JSUndetectable, JSValue). 2484 // JSGlobalProxy, JSGlobalObject, JSUndetectable, JSValue).
2489 default: { 2485 default: {
2490 Map* map_of_this = map(); 2486 Map* map_of_this = map();
2491 Heap* heap = GetHeap(); 2487 Heap* heap = GetHeap();
2492 Object* constructor = map_of_this->GetConstructor(); 2488 Object* constructor = map_of_this->GetConstructor();
2493 bool printed = false; 2489 bool printed = false;
2494 if (constructor->IsHeapObject() && 2490 if (constructor->IsHeapObject() &&
2495 !heap->Contains(HeapObject::cast(constructor))) { 2491 !heap->Contains(HeapObject::cast(constructor))) {
2496 accumulator->Add("!!!INVALID CONSTRUCTOR!!!"); 2492 accumulator->Add("!!!INVALID CONSTRUCTOR!!!");
(...skipping 10231 matching lines...) Expand 10 before | Expand all | Expand 10 after
12728 case JS_ARRAY_BUFFER_TYPE: 12724 case JS_ARRAY_BUFFER_TYPE:
12729 case JS_ARRAY_TYPE: 12725 case JS_ARRAY_TYPE:
12730 case JS_CONTEXT_EXTENSION_OBJECT_TYPE: 12726 case JS_CONTEXT_EXTENSION_OBJECT_TYPE:
12731 case JS_DATA_VIEW_TYPE: 12727 case JS_DATA_VIEW_TYPE:
12732 case JS_DATE_TYPE: 12728 case JS_DATE_TYPE:
12733 case JS_FUNCTION_TYPE: 12729 case JS_FUNCTION_TYPE:
12734 case JS_GENERATOR_OBJECT_TYPE: 12730 case JS_GENERATOR_OBJECT_TYPE:
12735 case JS_MAP_ITERATOR_TYPE: 12731 case JS_MAP_ITERATOR_TYPE:
12736 case JS_MAP_TYPE: 12732 case JS_MAP_TYPE:
12737 case JS_MESSAGE_OBJECT_TYPE: 12733 case JS_MESSAGE_OBJECT_TYPE:
12738 case JS_MODULE_TYPE:
12739 case JS_OBJECT_TYPE: 12734 case JS_OBJECT_TYPE:
12740 case JS_ERROR_TYPE: 12735 case JS_ERROR_TYPE:
12741 case JS_ARGUMENTS_TYPE: 12736 case JS_ARGUMENTS_TYPE:
12742 case JS_PROMISE_TYPE: 12737 case JS_PROMISE_TYPE:
12743 case JS_REGEXP_TYPE: 12738 case JS_REGEXP_TYPE:
12744 case JS_SET_ITERATOR_TYPE: 12739 case JS_SET_ITERATOR_TYPE:
12745 case JS_SET_TYPE: 12740 case JS_SET_TYPE:
12746 case JS_SPECIAL_API_OBJECT_TYPE: 12741 case JS_SPECIAL_API_OBJECT_TYPE:
12747 case JS_TYPED_ARRAY_TYPE: 12742 case JS_TYPED_ARRAY_TYPE:
12748 case JS_VALUE_TYPE: 12743 case JS_VALUE_TYPE:
(...skipping 6714 matching lines...) Expand 10 before | Expand all | Expand 10 after
19463 19458
19464 bool JSReceiver::HasProxyInPrototype(Isolate* isolate) { 19459 bool JSReceiver::HasProxyInPrototype(Isolate* isolate) {
19465 for (PrototypeIterator iter(isolate, this, kStartAtReceiver, 19460 for (PrototypeIterator iter(isolate, this, kStartAtReceiver,
19466 PrototypeIterator::END_AT_NULL); 19461 PrototypeIterator::END_AT_NULL);
19467 !iter.IsAtEnd(); iter.AdvanceIgnoringProxies()) { 19462 !iter.IsAtEnd(); iter.AdvanceIgnoringProxies()) {
19468 if (iter.GetCurrent<Object>()->IsJSProxy()) return true; 19463 if (iter.GetCurrent<Object>()->IsJSProxy()) return true;
19469 } 19464 }
19470 return false; 19465 return false;
19471 } 19466 }
19472 19467
19473 void JSModule::CreateExport(Handle<JSModule> module, Handle<String> name) { 19468 void Module::CreateExport(Handle<Module> module, Handle<String> name) {
19474 Isolate* isolate = module->GetIsolate(); 19469 Isolate* isolate = module->GetIsolate();
19475 Handle<Cell> cell = 19470 Handle<Cell> cell =
19476 isolate->factory()->NewCell(isolate->factory()->undefined_value()); 19471 isolate->factory()->NewCell(isolate->factory()->undefined_value());
19477 LookupIterator it(module, name); 19472 Handle<ObjectHashTable> exports(module->exports(), isolate);
19478 JSObject::CreateDataProperty(&it, cell, Object::THROW_ON_ERROR).ToChecked(); 19473 DCHECK(exports->Lookup(name)->IsTheHole(isolate));
19474 exports = ObjectHashTable::Put(exports, name, cell);
19475 module->set_exports(*exports);
19479 } 19476 }
19480 19477
19481 void JSModule::StoreExport(Handle<JSModule> module, Handle<String> name, 19478 void Module::StoreExport(Handle<Module> module, Handle<String> name,
19482 Handle<Object> value) { 19479 Handle<Object> value) {
19483 LookupIterator it(module, name); 19480 Handle<ObjectHashTable> exports(module->exports());
19484 Handle<Cell> cell = Handle<Cell>::cast(JSObject::GetDataProperty(&it)); 19481 Handle<Cell> cell(Cell::cast(exports->Lookup(name)));
19485 cell->set_value(*value); 19482 cell->set_value(*value);
19486 } 19483 }
19487 19484
19488 Handle<Object> JSModule::LoadExport(Handle<JSModule> module, 19485 Handle<Object> Module::LoadExport(Handle<Module> module, Handle<String> name) {
19489 Handle<String> name) {
19490 Isolate* isolate = module->GetIsolate(); 19486 Isolate* isolate = module->GetIsolate();
19491 LookupIterator it(module, name); 19487 Handle<ObjectHashTable> exports(module->exports(), isolate);
19492 Handle<Cell> cell = Handle<Cell>::cast(JSObject::GetDataProperty(&it)); 19488 Handle<Cell> cell(Cell::cast(exports->Lookup(name)));
19493 return handle(cell->value(), isolate); 19489 return handle(cell->value(), isolate);
19494 } 19490 }
19495 19491
19496 } // namespace internal 19492 } // namespace internal
19497 } // namespace v8 19493 } // namespace v8
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/objects-body-descriptors-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698