| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 3496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3507 #ifdef OBJECT_PRINT | 3507 #ifdef OBJECT_PRINT |
| 3508 inline void CodePrint() { | 3508 inline void CodePrint() { |
| 3509 CodePrint(stdout); | 3509 CodePrint(stdout); |
| 3510 } | 3510 } |
| 3511 void CodePrint(FILE* out); | 3511 void CodePrint(FILE* out); |
| 3512 #endif | 3512 #endif |
| 3513 #ifdef DEBUG | 3513 #ifdef DEBUG |
| 3514 void CodeVerify(); | 3514 void CodeVerify(); |
| 3515 #endif | 3515 #endif |
| 3516 | 3516 |
| 3517 // Returns the isolate/heap this code object belongs to. | |
| 3518 inline Isolate* isolate(); | |
| 3519 inline Heap* heap(); | |
| 3520 | |
| 3521 // Max loop nesting marker used to postpose OSR. We don't take loop | 3517 // Max loop nesting marker used to postpose OSR. We don't take loop |
| 3522 // nesting that is deeper than 5 levels into account. | 3518 // nesting that is deeper than 5 levels into account. |
| 3523 static const int kMaxLoopNestingMarker = 6; | 3519 static const int kMaxLoopNestingMarker = 6; |
| 3524 | 3520 |
| 3525 // Layout description. | 3521 // Layout description. |
| 3526 static const int kInstructionSizeOffset = HeapObject::kHeaderSize; | 3522 static const int kInstructionSizeOffset = HeapObject::kHeaderSize; |
| 3527 static const int kRelocationInfoOffset = kInstructionSizeOffset + kIntSize; | 3523 static const int kRelocationInfoOffset = kInstructionSizeOffset + kIntSize; |
| 3528 static const int kDeoptimizationDataOffset = | 3524 static const int kDeoptimizationDataOffset = |
| 3529 kRelocationInfoOffset + kPointerSize; | 3525 kRelocationInfoOffset + kPointerSize; |
| 3530 static const int kFlagsOffset = kDeoptimizationDataOffset + kPointerSize; | 3526 static const int kFlagsOffset = kDeoptimizationDataOffset + kPointerSize; |
| (...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4277 bool has_only_simple_this_property_assignments, | 4273 bool has_only_simple_this_property_assignments, |
| 4278 FixedArray* this_property_assignments); | 4274 FixedArray* this_property_assignments); |
| 4279 | 4275 |
| 4280 // Clear information on assignments of the form this.x = ...; | 4276 // Clear information on assignments of the form this.x = ...; |
| 4281 void ClearThisPropertyAssignmentsInfo(); | 4277 void ClearThisPropertyAssignmentsInfo(); |
| 4282 | 4278 |
| 4283 // Indicate that this function only consists of assignments of the form | 4279 // Indicate that this function only consists of assignments of the form |
| 4284 // this.x = y; where y is either a constant or refers to an argument. | 4280 // this.x = y; where y is either a constant or refers to an argument. |
| 4285 inline bool has_only_simple_this_property_assignments(); | 4281 inline bool has_only_simple_this_property_assignments(); |
| 4286 | 4282 |
| 4283 DECL_BOOLEAN_ACCESSORS(try_full_codegen) |
| 4284 |
| 4287 // Indicates if this function can be lazy compiled. | 4285 // Indicates if this function can be lazy compiled. |
| 4288 // This is used to determine if we can safely flush code from a function | 4286 // This is used to determine if we can safely flush code from a function |
| 4289 // when doing GC if we expect that the function will no longer be used. | 4287 // when doing GC if we expect that the function will no longer be used. |
| 4290 DECL_BOOLEAN_ACCESSORS(allows_lazy_compilation) | 4288 DECL_BOOLEAN_ACCESSORS(allows_lazy_compilation) |
| 4291 | 4289 |
| 4292 // Indicates how many full GCs this function has survived with assigned | 4290 // Indicates how many full GCs this function has survived with assigned |
| 4293 // code object. Used to determine when it is relatively safe to flush | 4291 // code object. Used to determine when it is relatively safe to flush |
| 4294 // this code object and replace it with lazy compilation stub. | 4292 // this code object and replace it with lazy compilation stub. |
| 4295 // Age is reset when GC notices that the code object is referenced | 4293 // Age is reset when GC notices that the code object is referenced |
| 4296 // from the stack or compilation cache. | 4294 // from the stack or compilation cache. |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4476 // Bit positions in start_position_and_type. | 4474 // Bit positions in start_position_and_type. |
| 4477 // The source code start position is in the 30 most significant bits of | 4475 // The source code start position is in the 30 most significant bits of |
| 4478 // the start_position_and_type field. | 4476 // the start_position_and_type field. |
| 4479 static const int kIsExpressionBit = 0; | 4477 static const int kIsExpressionBit = 0; |
| 4480 static const int kIsTopLevelBit = 1; | 4478 static const int kIsTopLevelBit = 1; |
| 4481 static const int kStartPositionShift = 2; | 4479 static const int kStartPositionShift = 2; |
| 4482 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); | 4480 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); |
| 4483 | 4481 |
| 4484 // Bit positions in compiler_hints. | 4482 // Bit positions in compiler_hints. |
| 4485 static const int kHasOnlySimpleThisPropertyAssignments = 0; | 4483 static const int kHasOnlySimpleThisPropertyAssignments = 0; |
| 4486 static const int kAllowLazyCompilation = 1; | 4484 static const int kTryFullCodegen = 1; |
| 4487 static const int kLiveObjectsMayExist = 2; | 4485 static const int kAllowLazyCompilation = 2; |
| 4488 static const int kCodeAgeShift = 3; | 4486 static const int kLiveObjectsMayExist = 3; |
| 4487 static const int kCodeAgeShift = 4; |
| 4489 static const int kCodeAgeMask = 0x7; | 4488 static const int kCodeAgeMask = 0x7; |
| 4490 static const int kOptimizationDisabled = 6; | 4489 static const int kOptimizationDisabled = 7; |
| 4491 static const int kStrictModeFunction = 7; | 4490 static const int kStrictModeFunction = 8; |
| 4491 static const int kUsesArguments = 9; |
| 4492 | 4492 |
| 4493 private: | 4493 private: |
| 4494 #if V8_HOST_ARCH_32_BIT | 4494 #if V8_HOST_ARCH_32_BIT |
| 4495 // On 32 bit platforms, compiler hints is a smi. | 4495 // On 32 bit platforms, compiler hints is a smi. |
| 4496 static const int kCompilerHintsSmiTagSize = kSmiTagSize; | 4496 static const int kCompilerHintsSmiTagSize = kSmiTagSize; |
| 4497 static const int kCompilerHintsSize = kPointerSize; | 4497 static const int kCompilerHintsSize = kPointerSize; |
| 4498 #else | 4498 #else |
| 4499 // On 64 bit platforms, compiler hints is not a smi, see comment above. | 4499 // On 64 bit platforms, compiler hints is not a smi, see comment above. |
| 4500 static const int kCompilerHintsSmiTagSize = 0; | 4500 static const int kCompilerHintsSmiTagSize = 0; |
| 4501 static const int kCompilerHintsSize = kIntSize; | 4501 static const int kCompilerHintsSize = kIntSize; |
| (...skipping 1525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6027 #endif | 6027 #endif |
| 6028 | 6028 |
| 6029 // Layout description. | 6029 // Layout description. |
| 6030 static const int kValueOffset = HeapObject::kHeaderSize; | 6030 static const int kValueOffset = HeapObject::kHeaderSize; |
| 6031 static const int kSize = kValueOffset + kPointerSize; | 6031 static const int kSize = kValueOffset + kPointerSize; |
| 6032 | 6032 |
| 6033 typedef FixedBodyDescriptor<kValueOffset, | 6033 typedef FixedBodyDescriptor<kValueOffset, |
| 6034 kValueOffset + kPointerSize, | 6034 kValueOffset + kPointerSize, |
| 6035 kSize> BodyDescriptor; | 6035 kSize> BodyDescriptor; |
| 6036 | 6036 |
| 6037 // Returns the isolate/heap this cell object belongs to. | |
| 6038 inline Isolate* isolate(); | |
| 6039 inline Heap* heap(); | |
| 6040 | |
| 6041 private: | 6037 private: |
| 6042 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalPropertyCell); | 6038 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalPropertyCell); |
| 6043 }; | 6039 }; |
| 6044 | 6040 |
| 6045 | 6041 |
| 6046 | 6042 |
| 6047 // Proxy describes objects pointing from JavaScript to C structures. | 6043 // Proxy describes objects pointing from JavaScript to C structures. |
| 6048 // Since they cannot contain references to JS HeapObjects they can be | 6044 // Since they cannot contain references to JS HeapObjects they can be |
| 6049 // placed in old_data_space. | 6045 // placed in old_data_space. |
| 6050 class Proxy: public HeapObject { | 6046 class Proxy: public HeapObject { |
| (...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6678 } else { | 6674 } else { |
| 6679 value &= ~(1 << bit_position); | 6675 value &= ~(1 << bit_position); |
| 6680 } | 6676 } |
| 6681 return value; | 6677 return value; |
| 6682 } | 6678 } |
| 6683 }; | 6679 }; |
| 6684 | 6680 |
| 6685 } } // namespace v8::internal | 6681 } } // namespace v8::internal |
| 6686 | 6682 |
| 6687 #endif // V8_OBJECTS_H_ | 6683 #endif // V8_OBJECTS_H_ |
| OLD | NEW |