| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 4093 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4104 // is weak. IsInobjectSlackTrackingInProgress is false after this call. | 4104 // is weak. IsInobjectSlackTrackingInProgress is false after this call. |
| 4105 void DetachInitialMap(); | 4105 void DetachInitialMap(); |
| 4106 | 4106 |
| 4107 // Restores the link to the initial map after the GC marking phase. | 4107 // Restores the link to the initial map after the GC marking phase. |
| 4108 // IsInobjectSlackTrackingInProgress is true after this call. | 4108 // IsInobjectSlackTrackingInProgress is true after this call. |
| 4109 void AttachInitialMap(Map* map); | 4109 void AttachInitialMap(Map* map); |
| 4110 | 4110 |
| 4111 // False if there are definitely no live objects created from this function. | 4111 // False if there are definitely no live objects created from this function. |
| 4112 // True if live objects _may_ exist (existence not guaranteed). | 4112 // True if live objects _may_ exist (existence not guaranteed). |
| 4113 // May go back from true to false after GC. | 4113 // May go back from true to false after GC. |
| 4114 inline bool live_objects_may_exist(); | 4114 DECL_BOOLEAN_ACCESSORS(live_objects_may_exist) |
| 4115 | |
| 4116 inline void set_live_objects_may_exist(bool value); | |
| 4117 | 4115 |
| 4118 // [instance class name]: class name for instances. | 4116 // [instance class name]: class name for instances. |
| 4119 DECL_ACCESSORS(instance_class_name, Object) | 4117 DECL_ACCESSORS(instance_class_name, Object) |
| 4120 | 4118 |
| 4121 // [function data]: This field holds some additional data for function. | 4119 // [function data]: This field holds some additional data for function. |
| 4122 // Currently it either has FunctionTemplateInfo to make benefit the API | 4120 // Currently it either has FunctionTemplateInfo to make benefit the API |
| 4123 // or Smi identifying a builtin function. | 4121 // or Smi identifying a builtin function. |
| 4124 // In the long run we don't want all functions to have this field but | 4122 // In the long run we don't want all functions to have this field but |
| 4125 // we can fix that when we have a better model for storing hidden data | 4123 // we can fix that when we have a better model for storing hidden data |
| 4126 // on objects. | 4124 // on objects. |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4194 bool has_only_simple_this_property_assignments, | 4192 bool has_only_simple_this_property_assignments, |
| 4195 FixedArray* this_property_assignments); | 4193 FixedArray* this_property_assignments); |
| 4196 | 4194 |
| 4197 // Clear information on assignments of the form this.x = ...; | 4195 // Clear information on assignments of the form this.x = ...; |
| 4198 void ClearThisPropertyAssignmentsInfo(); | 4196 void ClearThisPropertyAssignmentsInfo(); |
| 4199 | 4197 |
| 4200 // Indicate that this function only consists of assignments of the form | 4198 // Indicate that this function only consists of assignments of the form |
| 4201 // this.x = y; where y is either a constant or refers to an argument. | 4199 // this.x = y; where y is either a constant or refers to an argument. |
| 4202 inline bool has_only_simple_this_property_assignments(); | 4200 inline bool has_only_simple_this_property_assignments(); |
| 4203 | 4201 |
| 4204 inline bool try_full_codegen(); | 4202 DECL_BOOLEAN_ACCESSORS(try_full_codegen) |
| 4205 inline void set_try_full_codegen(bool flag); | |
| 4206 | 4203 |
| 4207 // Indicates if this function can be lazy compiled. | 4204 // Indicates if this function can be lazy compiled. |
| 4208 // This is used to determine if we can safely flush code from a function | 4205 // This is used to determine if we can safely flush code from a function |
| 4209 // when doing GC if we expect that the function will no longer be used. | 4206 // when doing GC if we expect that the function will no longer be used. |
| 4210 inline bool allows_lazy_compilation(); | 4207 DECL_BOOLEAN_ACCESSORS(allows_lazy_compilation) |
| 4211 inline void set_allows_lazy_compilation(bool flag); | |
| 4212 | 4208 |
| 4213 // Indicates how many full GCs this function has survived with assigned | 4209 // Indicates how many full GCs this function has survived with assigned |
| 4214 // code object. Used to determine when it is relatively safe to flush | 4210 // code object. Used to determine when it is relatively safe to flush |
| 4215 // this code object and replace it with lazy compilation stub. | 4211 // this code object and replace it with lazy compilation stub. |
| 4216 // Age is reset when GC notices that the code object is referenced | 4212 // Age is reset when GC notices that the code object is referenced |
| 4217 // from the stack or compilation cache. | 4213 // from the stack or compilation cache. |
| 4218 inline int code_age(); | 4214 inline int code_age(); |
| 4219 inline void set_code_age(int age); | 4215 inline void set_code_age(int age); |
| 4220 | 4216 |
| 4221 // Indicates whether optimizations have been disabled for this | 4217 // Indicates whether optimizations have been disabled for this |
| 4222 // shared function info. If a function is repeatedly optimized or if | 4218 // shared function info. If a function is repeatedly optimized or if |
| 4223 // we cannot optimize the function we disable optimization to avoid | 4219 // we cannot optimize the function we disable optimization to avoid |
| 4224 // spending time attempting to optimize it again. | 4220 // spending time attempting to optimize it again. |
| 4225 inline bool optimization_disabled(); | 4221 DECL_BOOLEAN_ACCESSORS(optimization_disabled) |
| 4226 inline void set_optimization_disabled(bool value); | |
| 4227 | 4222 |
| 4228 // Indicates whether the function is a strict mode function. | 4223 // Indicates whether the function is a strict mode function. |
| 4229 inline bool strict_mode(); | 4224 DECL_BOOLEAN_ACCESSORS(strict_mode) |
| 4230 inline void set_strict_mode(bool value); | 4225 |
| 4226 // False if the function definitely does not allocate an arguments object. |
| 4227 DECL_BOOLEAN_ACCESSORS(uses_arguments) |
| 4231 | 4228 |
| 4232 // Indicates whether or not the code in the shared function support | 4229 // Indicates whether or not the code in the shared function support |
| 4233 // deoptimization. | 4230 // deoptimization. |
| 4234 inline bool has_deoptimization_support(); | 4231 inline bool has_deoptimization_support(); |
| 4235 | 4232 |
| 4236 // Enable deoptimization support through recompiled code. | 4233 // Enable deoptimization support through recompiled code. |
| 4237 void EnableDeoptimizationSupport(Code* recompiled); | 4234 void EnableDeoptimizationSupport(Code* recompiled); |
| 4238 | 4235 |
| 4239 // Lookup the bailout ID and ASSERT that it exists in the non-optimized | 4236 // Lookup the bailout ID and ASSERT that it exists in the non-optimized |
| 4240 // code, returns whether it asserted (i.e., always true if assertions are | 4237 // code, returns whether it asserted (i.e., always true if assertions are |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4403 | 4400 |
| 4404 // Bit positions in compiler_hints. | 4401 // Bit positions in compiler_hints. |
| 4405 static const int kHasOnlySimpleThisPropertyAssignments = 0; | 4402 static const int kHasOnlySimpleThisPropertyAssignments = 0; |
| 4406 static const int kTryFullCodegen = 1; | 4403 static const int kTryFullCodegen = 1; |
| 4407 static const int kAllowLazyCompilation = 2; | 4404 static const int kAllowLazyCompilation = 2; |
| 4408 static const int kLiveObjectsMayExist = 3; | 4405 static const int kLiveObjectsMayExist = 3; |
| 4409 static const int kCodeAgeShift = 4; | 4406 static const int kCodeAgeShift = 4; |
| 4410 static const int kCodeAgeMask = 0x7; | 4407 static const int kCodeAgeMask = 0x7; |
| 4411 static const int kOptimizationDisabled = 7; | 4408 static const int kOptimizationDisabled = 7; |
| 4412 static const int kStrictModeFunction = 8; | 4409 static const int kStrictModeFunction = 8; |
| 4410 static const int kUsesArguments = 9; |
| 4413 | 4411 |
| 4414 private: | 4412 private: |
| 4415 #if V8_HOST_ARCH_32_BIT | 4413 #if V8_HOST_ARCH_32_BIT |
| 4416 // On 32 bit platforms, compiler hints is a smi. | 4414 // On 32 bit platforms, compiler hints is a smi. |
| 4417 static const int kCompilerHintsSmiTagSize = kSmiTagSize; | 4415 static const int kCompilerHintsSmiTagSize = kSmiTagSize; |
| 4418 static const int kCompilerHintsSize = kPointerSize; | 4416 static const int kCompilerHintsSize = kPointerSize; |
| 4419 #else | 4417 #else |
| 4420 // On 64 bit platforms, compiler hints is not a smi, see comment above. | 4418 // On 64 bit platforms, compiler hints is not a smi, see comment above. |
| 4421 static const int kCompilerHintsSmiTagSize = 0; | 4419 static const int kCompilerHintsSmiTagSize = 0; |
| 4422 static const int kCompilerHintsSize = kIntSize; | 4420 static const int kCompilerHintsSize = kIntSize; |
| (...skipping 2161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6584 } else { | 6582 } else { |
| 6585 value &= ~(1 << bit_position); | 6583 value &= ~(1 << bit_position); |
| 6586 } | 6584 } |
| 6587 return value; | 6585 return value; |
| 6588 } | 6586 } |
| 6589 }; | 6587 }; |
| 6590 | 6588 |
| 6591 } } // namespace v8::internal | 6589 } } // namespace v8::internal |
| 6592 | 6590 |
| 6593 #endif // V8_OBJECTS_H_ | 6591 #endif // V8_OBJECTS_H_ |
| OLD | NEW |