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

Side by Side Diff: src/contexts.cc

Issue 2302783002: [modules] Basic support of exports (Closed)
Patch Set: Disable module tests for deopt fuzzer. 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/contexts.h ('k') | src/debug/debug-scopes.cc » ('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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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/contexts.h" 5 #include "src/contexts.h"
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/debug/debug.h" 8 #include "src/debug/debug.h"
9 #include "src/isolate-inl.h" 9 #include "src/isolate-inl.h"
10 10
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 result->context_index = i; 50 result->context_index = i;
51 result->slot_index = slot_index; 51 result->slot_index = slot_index;
52 return true; 52 return true;
53 } 53 }
54 } 54 }
55 return false; 55 return false;
56 } 56 }
57 57
58 58
59 bool Context::is_declaration_context() { 59 bool Context::is_declaration_context() {
60 if (IsFunctionContext() || IsNativeContext() || IsScriptContext()) { 60 if (IsFunctionContext() || IsNativeContext() || IsScriptContext() ||
61 IsModuleContext()) {
61 return true; 62 return true;
62 } 63 }
63 if (!IsBlockContext()) return false; 64 if (!IsBlockContext()) return false;
64 Object* ext = extension(); 65 Object* ext = extension();
65 // If we have the special extension, we immediately know it must be a 66 // If we have the special extension, we immediately know it must be a
66 // declaration scope. That's just a small performance shortcut. 67 // declaration scope. That's just a small performance shortcut.
67 return ext->IsContextExtension() || 68 return ext->IsContextExtension() ||
68 ScopeInfo::cast(ext)->is_declaration_scope(); 69 ScopeInfo::cast(ext)->is_declaration_scope();
69 } 70 }
70 71
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 } 117 }
117 HeapObject* object = extension(); 118 HeapObject* object = extension();
118 if (object->IsContextExtension()) { 119 if (object->IsContextExtension()) {
119 DCHECK(IsBlockContext() || IsCatchContext() || IsWithContext() || 120 DCHECK(IsBlockContext() || IsCatchContext() || IsWithContext() ||
120 IsDebugEvaluateContext()); 121 IsDebugEvaluateContext());
121 object = ContextExtension::cast(object)->scope_info(); 122 object = ContextExtension::cast(object)->scope_info();
122 } 123 }
123 return ScopeInfo::cast(object); 124 return ScopeInfo::cast(object);
124 } 125 }
125 126
127 JSModule* Context::module() {
128 Context* current = this;
129 while (!current->IsModuleContext()) {
130 current = current->previous();
131 }
132 return JSModule::cast(current->extension());
133 }
126 134
127 String* Context::catch_name() { 135 String* Context::catch_name() {
128 DCHECK(IsCatchContext()); 136 DCHECK(IsCatchContext());
129 return String::cast(ContextExtension::cast(extension())->extension()); 137 return String::cast(ContextExtension::cast(extension())->extension());
130 } 138 }
131 139
132 140
133 JSGlobalObject* Context::global_object() { 141 JSGlobalObject* Context::global_object() {
134 return JSGlobalObject::cast(native_context()->extension()); 142 return JSGlobalObject::cast(native_context()->extension());
135 } 143 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 190
183 static PropertyAttributes GetAttributesForMode(VariableMode mode) { 191 static PropertyAttributes GetAttributesForMode(VariableMode mode) {
184 DCHECK(IsDeclaredVariableMode(mode)); 192 DCHECK(IsDeclaredVariableMode(mode));
185 return mode == CONST ? READ_ONLY : NONE; 193 return mode == CONST ? READ_ONLY : NONE;
186 } 194 }
187 195
188 Handle<Object> Context::Lookup(Handle<String> name, ContextLookupFlags flags, 196 Handle<Object> Context::Lookup(Handle<String> name, ContextLookupFlags flags,
189 int* index, PropertyAttributes* attributes, 197 int* index, PropertyAttributes* attributes,
190 InitializationFlag* init_flag, 198 InitializationFlag* init_flag,
191 VariableMode* variable_mode) { 199 VariableMode* variable_mode) {
200 DCHECK(!IsModuleContext());
192 Isolate* isolate = GetIsolate(); 201 Isolate* isolate = GetIsolate();
193 Handle<Context> context(this, isolate); 202 Handle<Context> context(this, isolate);
194 203
195 bool follow_context_chain = (flags & FOLLOW_CONTEXT_CHAIN) != 0; 204 bool follow_context_chain = (flags & FOLLOW_CONTEXT_CHAIN) != 0;
196 bool failed_whitelist = false; 205 bool failed_whitelist = false;
197 *index = kNotFound; 206 *index = kNotFound;
198 *attributes = ABSENT; 207 *attributes = ABSENT;
199 *init_flag = kCreatedInitialized; 208 *init_flag = kCreatedInitialized;
200 *variable_mode = VAR; 209 *variable_mode = VAR;
201 210
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 571
563 int previous_value = errors_thrown()->value(); 572 int previous_value = errors_thrown()->value();
564 set_errors_thrown(Smi::FromInt(previous_value + 1)); 573 set_errors_thrown(Smi::FromInt(previous_value + 1));
565 } 574 }
566 575
567 576
568 int Context::GetErrorsThrown() { return errors_thrown()->value(); } 577 int Context::GetErrorsThrown() { return errors_thrown()->value(); }
569 578
570 } // namespace internal 579 } // namespace internal
571 } // namespace v8 580 } // namespace v8
OLDNEW
« no previous file with comments | « src/contexts.h ('k') | src/debug/debug-scopes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698