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

Side by Side Diff: src/objects.h

Issue 1218783005: Support for global var shortcuts in script contexts. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 5 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 #ifndef V8_OBJECTS_H_ 5 #ifndef V8_OBJECTS_H_
6 #define V8_OBJECTS_H_ 6 #define V8_OBJECTS_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 3986 matching lines...) Expand 10 before | Expand all | Expand 10 after
3997 // present; otherwise returns a value < 0. The name must be an internalized 3997 // present; otherwise returns a value < 0. The name must be an internalized
3998 // string. 3998 // string.
3999 int StackSlotIndex(String* name); 3999 int StackSlotIndex(String* name);
4000 4000
4001 // Lookup support for serialized scope info. Returns the 4001 // Lookup support for serialized scope info. Returns the
4002 // context slot index for a given slot name if the slot is present; otherwise 4002 // context slot index for a given slot name if the slot is present; otherwise
4003 // returns a value < 0. The name must be an internalized string. 4003 // returns a value < 0. The name must be an internalized string.
4004 // If the slot is present and mode != NULL, sets *mode to the corresponding 4004 // If the slot is present and mode != NULL, sets *mode to the corresponding
4005 // mode for that variable. 4005 // mode for that variable.
4006 static int ContextSlotIndex(Handle<ScopeInfo> scope_info, Handle<String> name, 4006 static int ContextSlotIndex(Handle<ScopeInfo> scope_info, Handle<String> name,
4007 VariableMode* mode, InitializationFlag* init_flag, 4007 VariableMode* mode,
4008 ContextSlotKindFlag* context_slot_kind,
4009 InitializationFlag* init_flag,
4008 MaybeAssignedFlag* maybe_assigned_flag); 4010 MaybeAssignedFlag* maybe_assigned_flag);
4009 4011
4010 // Lookup support for serialized scope info. Returns the 4012 // Lookup support for serialized scope info. Returns the
4011 // parameter index for a given parameter name if the parameter is present; 4013 // parameter index for a given parameter name if the parameter is present;
4012 // otherwise returns a value < 0. The name must be an internalized string. 4014 // otherwise returns a value < 0. The name must be an internalized string.
4013 int ParameterIndex(String* name); 4015 int ParameterIndex(String* name);
4014 4016
4015 // Lookup support for serialized scope info. Returns the function context 4017 // Lookup support for serialized scope info. Returns the function context
4016 // slot index if the function name is present and context-allocated (named 4018 // slot index if the function name is present and context-allocated (named
4017 // function expressions, only), otherwise returns a value < 0. The name 4019 // function expressions, only), otherwise returns a value < 0. The name
(...skipping 30 matching lines...) Expand all
4048 // 2. The number of parameters. This only applies to function scopes. For 4050 // 2. The number of parameters. This only applies to function scopes. For
4049 // non-function scopes this is 0. 4051 // non-function scopes this is 0.
4050 // 3. The number of non-parameter variables allocated on the stack. 4052 // 3. The number of non-parameter variables allocated on the stack.
4051 // 4. The number of non-parameter and parameter variables allocated in the 4053 // 4. The number of non-parameter and parameter variables allocated in the
4052 // context. 4054 // context.
4053 #define FOR_EACH_NUMERIC_FIELD(V) \ 4055 #define FOR_EACH_NUMERIC_FIELD(V) \
4054 V(Flags) \ 4056 V(Flags) \
4055 V(ParameterCount) \ 4057 V(ParameterCount) \
4056 V(StackLocalCount) \ 4058 V(StackLocalCount) \
4057 V(ContextLocalCount) \ 4059 V(ContextLocalCount) \
4060 V(ContextGlobalCount) \
4058 V(StrongModeFreeVariableCount) 4061 V(StrongModeFreeVariableCount)
4059 4062
4060 #define FIELD_ACCESSORS(name) \ 4063 #define FIELD_ACCESSORS(name) \
4061 void Set##name(int value) { \ 4064 void Set##name(int value) { \
4062 set(k##name, Smi::FromInt(value)); \ 4065 set(k##name, Smi::FromInt(value)); \
4063 } \ 4066 } \
4064 int name() { \ 4067 int name() { \
4065 if (length() > 0) { \ 4068 if (length() > 0) { \
4066 return Smi::cast(get(k##name))->value(); \ 4069 return Smi::cast(get(k##name))->value(); \
4067 } else { \ 4070 } else { \
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
4116 // context or stack slot index for the variable. 4119 // context or stack slot index for the variable.
4117 // 9. FunctionNameEntryIndex: 4120 // 9. FunctionNameEntryIndex:
4118 // If the scope belongs to a named function expression this part contains 4121 // If the scope belongs to a named function expression this part contains
4119 // information about the function variable. It always occupies two array 4122 // information about the function variable. It always occupies two array
4120 // slots: a. The name of the function variable. 4123 // slots: a. The name of the function variable.
4121 // b. The context or stack slot index for the variable. 4124 // b. The context or stack slot index for the variable.
4122 int ParameterEntriesIndex(); 4125 int ParameterEntriesIndex();
4123 int StackLocalFirstSlotIndex(); 4126 int StackLocalFirstSlotIndex();
4124 int StackLocalEntriesIndex(); 4127 int StackLocalEntriesIndex();
4125 int ContextLocalNameEntriesIndex(); 4128 int ContextLocalNameEntriesIndex();
4129 int ContextGlobalNameEntriesIndex();
4126 int ContextLocalInfoEntriesIndex(); 4130 int ContextLocalInfoEntriesIndex();
4131 int ContextGlobalInfoEntriesIndex();
4127 int StrongModeFreeVariableNameEntriesIndex(); 4132 int StrongModeFreeVariableNameEntriesIndex();
4128 int StrongModeFreeVariablePositionEntriesIndex(); 4133 int StrongModeFreeVariablePositionEntriesIndex();
4129 int ReceiverEntryIndex(); 4134 int ReceiverEntryIndex();
4130 int FunctionNameEntryIndex(); 4135 int FunctionNameEntryIndex();
4131 4136
4137 int Lookup(Handle<String> name, int start, int end, VariableMode* mode,
4138 ContextSlotKindFlag* context_slot_kind,
4139 InitializationFlag* init_flag,
4140 MaybeAssignedFlag* maybe_assigned_flag);
4141
4132 // Used for the function name variable for named function expressions, and for 4142 // Used for the function name variable for named function expressions, and for
4133 // the receiver. 4143 // the receiver.
4134 enum VariableAllocationInfo { NONE, STACK, CONTEXT, UNUSED }; 4144 enum VariableAllocationInfo { NONE, STACK, CONTEXT, UNUSED };
4135 4145
4136 // Properties of scopes. 4146 // Properties of scopes.
4137 class ScopeTypeField : public BitField<ScopeType, 0, 4> {}; 4147 class ScopeTypeField : public BitField<ScopeType, 0, 4> {};
4138 class CallsEvalField : public BitField<bool, ScopeTypeField::kNext, 1> {}; 4148 class CallsEvalField : public BitField<bool, ScopeTypeField::kNext, 1> {};
4139 STATIC_ASSERT(LANGUAGE_END == 3); 4149 STATIC_ASSERT(LANGUAGE_END == 3);
4140 class LanguageModeField 4150 class LanguageModeField
4141 : public BitField<LanguageMode, CallsEvalField::kNext, 2> {}; 4151 : public BitField<LanguageMode, CallsEvalField::kNext, 2> {};
(...skipping 6675 matching lines...) Expand 10 before | Expand all | Expand 10 after
10817 } else { 10827 } else {
10818 value &= ~(1 << bit_position); 10828 value &= ~(1 << bit_position);
10819 } 10829 }
10820 return value; 10830 return value;
10821 } 10831 }
10822 }; 10832 };
10823 10833
10824 } } // namespace v8::internal 10834 } } // namespace v8::internal
10825 10835
10826 #endif // V8_OBJECTS_H_ 10836 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698