| 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 // - Smi (immediate small integer) | 47 // - Smi (immediate small integer) |
| 48 // - HeapObject (superclass for everything allocated in the heap) | 48 // - HeapObject (superclass for everything allocated in the heap) |
| 49 // - JSObject | 49 // - JSObject |
| 50 // - JSArray | 50 // - JSArray |
| 51 // - JSRegExp | 51 // - JSRegExp |
| 52 // - JSFunction | 52 // - JSFunction |
| 53 // - GlobalObject | 53 // - GlobalObject |
| 54 // - JSGlobalObject | 54 // - JSGlobalObject |
| 55 // - JSBuiltinsObject | 55 // - JSBuiltinsObject |
| 56 // - JSGlobalProxy | 56 // - JSGlobalProxy |
| 57 // - JSValue | 57 // - JSValue |
| 58 // - JSMessageObject |
| 58 // - ByteArray | 59 // - ByteArray |
| 59 // - PixelArray | 60 // - PixelArray |
| 60 // - ExternalArray | 61 // - ExternalArray |
| 61 // - ExternalByteArray | 62 // - ExternalByteArray |
| 62 // - ExternalUnsignedByteArray | 63 // - ExternalUnsignedByteArray |
| 63 // - ExternalShortArray | 64 // - ExternalShortArray |
| 64 // - ExternalUnsignedShortArray | 65 // - ExternalUnsignedShortArray |
| 65 // - ExternalIntArray | 66 // - ExternalIntArray |
| 66 // - ExternalUnsignedIntArray | 67 // - ExternalUnsignedIntArray |
| 67 // - ExternalFloatArray | 68 // - ExternalFloatArray |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 V(FUNCTION_TEMPLATE_INFO_TYPE) \ | 282 V(FUNCTION_TEMPLATE_INFO_TYPE) \ |
| 282 V(OBJECT_TEMPLATE_INFO_TYPE) \ | 283 V(OBJECT_TEMPLATE_INFO_TYPE) \ |
| 283 V(SIGNATURE_INFO_TYPE) \ | 284 V(SIGNATURE_INFO_TYPE) \ |
| 284 V(TYPE_SWITCH_INFO_TYPE) \ | 285 V(TYPE_SWITCH_INFO_TYPE) \ |
| 285 V(SCRIPT_TYPE) \ | 286 V(SCRIPT_TYPE) \ |
| 286 V(CODE_CACHE_TYPE) \ | 287 V(CODE_CACHE_TYPE) \ |
| 287 \ | 288 \ |
| 288 V(FIXED_ARRAY_TYPE) \ | 289 V(FIXED_ARRAY_TYPE) \ |
| 289 V(SHARED_FUNCTION_INFO_TYPE) \ | 290 V(SHARED_FUNCTION_INFO_TYPE) \ |
| 290 \ | 291 \ |
| 292 V(JS_MESSAGE_OBJECT_TYPE) \ |
| 293 \ |
| 291 V(JS_VALUE_TYPE) \ | 294 V(JS_VALUE_TYPE) \ |
| 292 V(JS_OBJECT_TYPE) \ | 295 V(JS_OBJECT_TYPE) \ |
| 293 V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \ | 296 V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \ |
| 294 V(JS_GLOBAL_OBJECT_TYPE) \ | 297 V(JS_GLOBAL_OBJECT_TYPE) \ |
| 295 V(JS_BUILTINS_OBJECT_TYPE) \ | 298 V(JS_BUILTINS_OBJECT_TYPE) \ |
| 296 V(JS_GLOBAL_PROXY_TYPE) \ | 299 V(JS_GLOBAL_PROXY_TYPE) \ |
| 297 V(JS_ARRAY_TYPE) \ | 300 V(JS_ARRAY_TYPE) \ |
| 298 V(JS_REGEXP_TYPE) \ | 301 V(JS_REGEXP_TYPE) \ |
| 299 \ | 302 \ |
| 300 V(JS_FUNCTION_TYPE) \ | 303 V(JS_FUNCTION_TYPE) \ |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 // The following two instance types are only used when ENABLE_DEBUGGER_SUPPORT | 514 // The following two instance types are only used when ENABLE_DEBUGGER_SUPPORT |
| 512 // is defined. However as include/v8.h contain some of the instance type | 515 // is defined. However as include/v8.h contain some of the instance type |
| 513 // constants always having them avoids them getting different numbers | 516 // constants always having them avoids them getting different numbers |
| 514 // depending on whether ENABLE_DEBUGGER_SUPPORT is defined or not. | 517 // depending on whether ENABLE_DEBUGGER_SUPPORT is defined or not. |
| 515 DEBUG_INFO_TYPE, | 518 DEBUG_INFO_TYPE, |
| 516 BREAK_POINT_INFO_TYPE, | 519 BREAK_POINT_INFO_TYPE, |
| 517 | 520 |
| 518 FIXED_ARRAY_TYPE, | 521 FIXED_ARRAY_TYPE, |
| 519 SHARED_FUNCTION_INFO_TYPE, | 522 SHARED_FUNCTION_INFO_TYPE, |
| 520 | 523 |
| 524 JS_MESSAGE_OBJECT_TYPE, |
| 525 |
| 521 JS_VALUE_TYPE, // FIRST_JS_OBJECT_TYPE | 526 JS_VALUE_TYPE, // FIRST_JS_OBJECT_TYPE |
| 522 JS_OBJECT_TYPE, | 527 JS_OBJECT_TYPE, |
| 523 JS_CONTEXT_EXTENSION_OBJECT_TYPE, | 528 JS_CONTEXT_EXTENSION_OBJECT_TYPE, |
| 524 JS_GLOBAL_OBJECT_TYPE, | 529 JS_GLOBAL_OBJECT_TYPE, |
| 525 JS_BUILTINS_OBJECT_TYPE, | 530 JS_BUILTINS_OBJECT_TYPE, |
| 526 JS_GLOBAL_PROXY_TYPE, | 531 JS_GLOBAL_PROXY_TYPE, |
| 527 JS_ARRAY_TYPE, | 532 JS_ARRAY_TYPE, |
| 528 | 533 |
| 529 JS_REGEXP_TYPE, // LAST_JS_OBJECT_TYPE, FIRST_FUNCTION_CLASS_TYPE | 534 JS_REGEXP_TYPE, // LAST_JS_OBJECT_TYPE, FIRST_FUNCTION_CLASS_TYPE |
| 530 | 535 |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 V(DeoptimizationOutputData) \ | 673 V(DeoptimizationOutputData) \ |
| 669 V(FixedArray) \ | 674 V(FixedArray) \ |
| 670 V(Context) \ | 675 V(Context) \ |
| 671 V(CatchContext) \ | 676 V(CatchContext) \ |
| 672 V(GlobalContext) \ | 677 V(GlobalContext) \ |
| 673 V(JSFunction) \ | 678 V(JSFunction) \ |
| 674 V(Code) \ | 679 V(Code) \ |
| 675 V(Oddball) \ | 680 V(Oddball) \ |
| 676 V(SharedFunctionInfo) \ | 681 V(SharedFunctionInfo) \ |
| 677 V(JSValue) \ | 682 V(JSValue) \ |
| 683 V(JSMessageObject) \ |
| 678 V(StringWrapper) \ | 684 V(StringWrapper) \ |
| 679 V(Proxy) \ | 685 V(Proxy) \ |
| 680 V(Boolean) \ | 686 V(Boolean) \ |
| 681 V(JSArray) \ | 687 V(JSArray) \ |
| 682 V(JSRegExp) \ | 688 V(JSRegExp) \ |
| 683 V(HashTable) \ | 689 V(HashTable) \ |
| 684 V(Dictionary) \ | 690 V(Dictionary) \ |
| 685 V(SymbolTable) \ | 691 V(SymbolTable) \ |
| 686 V(JSFunctionResultCache) \ | 692 V(JSFunctionResultCache) \ |
| 687 V(NormalizedMapCache) \ | 693 V(NormalizedMapCache) \ |
| (...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1575 // Lookup a property. If found, the result is valid and has | 1581 // Lookup a property. If found, the result is valid and has |
| 1576 // detailed information. | 1582 // detailed information. |
| 1577 void LocalLookup(String* name, LookupResult* result); | 1583 void LocalLookup(String* name, LookupResult* result); |
| 1578 void Lookup(String* name, LookupResult* result); | 1584 void Lookup(String* name, LookupResult* result); |
| 1579 | 1585 |
| 1580 // The following lookup functions skip interceptors. | 1586 // The following lookup functions skip interceptors. |
| 1581 void LocalLookupRealNamedProperty(String* name, LookupResult* result); | 1587 void LocalLookupRealNamedProperty(String* name, LookupResult* result); |
| 1582 void LookupRealNamedProperty(String* name, LookupResult* result); | 1588 void LookupRealNamedProperty(String* name, LookupResult* result); |
| 1583 void LookupRealNamedPropertyInPrototypes(String* name, LookupResult* result); | 1589 void LookupRealNamedPropertyInPrototypes(String* name, LookupResult* result); |
| 1584 void LookupCallbackSetterInPrototypes(String* name, LookupResult* result); | 1590 void LookupCallbackSetterInPrototypes(String* name, LookupResult* result); |
| 1585 bool SetElementWithCallbackSetterInPrototypes(uint32_t index, Object* value); | 1591 MUST_USE_RESULT MaybeObject* SetElementWithCallbackSetterInPrototypes( |
| 1592 uint32_t index, Object* value, bool* found); |
| 1586 void LookupCallback(String* name, LookupResult* result); | 1593 void LookupCallback(String* name, LookupResult* result); |
| 1587 | 1594 |
| 1588 // Returns the number of properties on this object filtering out properties | 1595 // Returns the number of properties on this object filtering out properties |
| 1589 // with the specified attributes (ignoring interceptors). | 1596 // with the specified attributes (ignoring interceptors). |
| 1590 int NumberOfLocalProperties(PropertyAttributes filter); | 1597 int NumberOfLocalProperties(PropertyAttributes filter); |
| 1591 // Returns the number of enumerable properties (ignoring interceptors). | 1598 // Returns the number of enumerable properties (ignoring interceptors). |
| 1592 int NumberOfEnumProperties(); | 1599 int NumberOfEnumProperties(); |
| 1593 // Fill in details for properties into storage starting at the specified | 1600 // Fill in details for properties into storage starting at the specified |
| 1594 // index. | 1601 // index. |
| 1595 void GetLocalPropertyNames(FixedArray* storage, int index); | 1602 void GetLocalPropertyNames(FixedArray* storage, int index); |
| (...skipping 1683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3279 inline void set_allow_osr_at_loop_nesting_level(int level); | 3286 inline void set_allow_osr_at_loop_nesting_level(int level); |
| 3280 inline int allow_osr_at_loop_nesting_level(); | 3287 inline int allow_osr_at_loop_nesting_level(); |
| 3281 | 3288 |
| 3282 // [stack_slots]: For kind OPTIMIZED_FUNCTION, the number of stack slots | 3289 // [stack_slots]: For kind OPTIMIZED_FUNCTION, the number of stack slots |
| 3283 // reserved in the code prologue. | 3290 // reserved in the code prologue. |
| 3284 inline unsigned stack_slots(); | 3291 inline unsigned stack_slots(); |
| 3285 inline void set_stack_slots(unsigned slots); | 3292 inline void set_stack_slots(unsigned slots); |
| 3286 | 3293 |
| 3287 // [safepoint_table_start]: For kind OPTIMIZED_CODE, the offset in | 3294 // [safepoint_table_start]: For kind OPTIMIZED_CODE, the offset in |
| 3288 // the instruction stream where the safepoint table starts. | 3295 // the instruction stream where the safepoint table starts. |
| 3289 inline unsigned safepoint_table_start(); | 3296 inline unsigned safepoint_table_offset(); |
| 3290 inline void set_safepoint_table_start(unsigned offset); | 3297 inline void set_safepoint_table_offset(unsigned offset); |
| 3291 | 3298 |
| 3292 // [stack_check_table_start]: For kind FUNCTION, the offset in the | 3299 // [stack_check_table_start]: For kind FUNCTION, the offset in the |
| 3293 // instruction stream where the stack check table starts. | 3300 // instruction stream where the stack check table starts. |
| 3294 inline unsigned stack_check_table_start(); | 3301 inline unsigned stack_check_table_offset(); |
| 3295 inline void set_stack_check_table_start(unsigned offset); | 3302 inline void set_stack_check_table_offset(unsigned offset); |
| 3296 | 3303 |
| 3297 // [check type]: For kind CALL_IC, tells how to check if the | 3304 // [check type]: For kind CALL_IC, tells how to check if the |
| 3298 // receiver is valid for the given call. | 3305 // receiver is valid for the given call. |
| 3299 inline CheckType check_type(); | 3306 inline CheckType check_type(); |
| 3300 inline void set_check_type(CheckType value); | 3307 inline void set_check_type(CheckType value); |
| 3301 | 3308 |
| 3302 // [binary op type]: For all BINARY_OP_IC. | 3309 // [binary op type]: For all BINARY_OP_IC. |
| 3303 inline byte binary_op_type(); | 3310 inline byte binary_op_type(); |
| 3304 inline void set_binary_op_type(byte value); | 3311 inline void set_binary_op_type(byte value); |
| 3305 | 3312 |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3449 static const int kCheckTypeOffset = kKindSpecificFlagsOffset; | 3456 static const int kCheckTypeOffset = kKindSpecificFlagsOffset; |
| 3450 | 3457 |
| 3451 static const int kCompareStateOffset = kStubMajorKeyOffset + 1; | 3458 static const int kCompareStateOffset = kStubMajorKeyOffset + 1; |
| 3452 static const int kBinaryOpTypeOffset = kStubMajorKeyOffset + 1; | 3459 static const int kBinaryOpTypeOffset = kStubMajorKeyOffset + 1; |
| 3453 static const int kHasDeoptimizationSupportOffset = kOptimizableOffset + 1; | 3460 static const int kHasDeoptimizationSupportOffset = kOptimizableOffset + 1; |
| 3454 | 3461 |
| 3455 static const int kBinaryOpReturnTypeOffset = kBinaryOpTypeOffset + 1; | 3462 static const int kBinaryOpReturnTypeOffset = kBinaryOpTypeOffset + 1; |
| 3456 static const int kAllowOSRAtLoopNestingLevelOffset = | 3463 static const int kAllowOSRAtLoopNestingLevelOffset = |
| 3457 kHasDeoptimizationSupportOffset + 1; | 3464 kHasDeoptimizationSupportOffset + 1; |
| 3458 | 3465 |
| 3459 static const int kSafepointTableStartOffset = kStackSlotsOffset + kIntSize; | 3466 static const int kSafepointTableOffsetOffset = kStackSlotsOffset + kIntSize; |
| 3460 static const int kStackCheckTableStartOffset = kStackSlotsOffset + kIntSize; | 3467 static const int kStackCheckTableOffsetOffset = kStackSlotsOffset + kIntSize; |
| 3461 | 3468 |
| 3462 // Flags layout. | 3469 // Flags layout. |
| 3463 static const int kFlagsICStateShift = 0; | 3470 static const int kFlagsICStateShift = 0; |
| 3464 static const int kFlagsICInLoopShift = 3; | 3471 static const int kFlagsICInLoopShift = 3; |
| 3465 static const int kFlagsTypeShift = 4; | 3472 static const int kFlagsTypeShift = 4; |
| 3466 static const int kFlagsKindShift = 7; | 3473 static const int kFlagsKindShift = 7; |
| 3467 static const int kFlagsICHolderShift = 11; | 3474 static const int kFlagsICHolderShift = 11; |
| 3468 static const int kFlagsExtraICStateShift = 12; | 3475 static const int kFlagsExtraICStateShift = 12; |
| 3469 static const int kFlagsArgumentsCountShift = 14; | 3476 static const int kFlagsArgumentsCountShift = 14; |
| 3470 | 3477 |
| (...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4183 inline int code_age(); | 4190 inline int code_age(); |
| 4184 inline void set_code_age(int age); | 4191 inline void set_code_age(int age); |
| 4185 | 4192 |
| 4186 // Indicates whether optimizations have been disabled for this | 4193 // Indicates whether optimizations have been disabled for this |
| 4187 // shared function info. If a function is repeatedly optimized or if | 4194 // shared function info. If a function is repeatedly optimized or if |
| 4188 // we cannot optimize the function we disable optimization to avoid | 4195 // we cannot optimize the function we disable optimization to avoid |
| 4189 // spending time attempting to optimize it again. | 4196 // spending time attempting to optimize it again. |
| 4190 inline bool optimization_disabled(); | 4197 inline bool optimization_disabled(); |
| 4191 inline void set_optimization_disabled(bool value); | 4198 inline void set_optimization_disabled(bool value); |
| 4192 | 4199 |
| 4200 // Indicates whether the function is a strict mode function. |
| 4201 inline bool strict_mode(); |
| 4202 inline void set_strict_mode(bool value); |
| 4203 |
| 4193 // Indicates whether or not the code in the shared function support | 4204 // Indicates whether or not the code in the shared function support |
| 4194 // deoptimization. | 4205 // deoptimization. |
| 4195 inline bool has_deoptimization_support(); | 4206 inline bool has_deoptimization_support(); |
| 4196 | 4207 |
| 4197 // Enable deoptimization support through recompiled code. | 4208 // Enable deoptimization support through recompiled code. |
| 4198 void EnableDeoptimizationSupport(Code* recompiled); | 4209 void EnableDeoptimizationSupport(Code* recompiled); |
| 4199 | 4210 |
| 4200 // Lookup the bailout ID and ASSERT that it exists in the non-optimized | 4211 // Lookup the bailout ID and ASSERT that it exists in the non-optimized |
| 4201 // code, returns whether it asserted (i.e., always true if assertions are | 4212 // code, returns whether it asserted (i.e., always true if assertions are |
| 4202 // disabled). | 4213 // disabled). |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4364 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); | 4375 static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1); |
| 4365 | 4376 |
| 4366 // Bit positions in compiler_hints. | 4377 // Bit positions in compiler_hints. |
| 4367 static const int kHasOnlySimpleThisPropertyAssignments = 0; | 4378 static const int kHasOnlySimpleThisPropertyAssignments = 0; |
| 4368 static const int kTryFullCodegen = 1; | 4379 static const int kTryFullCodegen = 1; |
| 4369 static const int kAllowLazyCompilation = 2; | 4380 static const int kAllowLazyCompilation = 2; |
| 4370 static const int kLiveObjectsMayExist = 3; | 4381 static const int kLiveObjectsMayExist = 3; |
| 4371 static const int kCodeAgeShift = 4; | 4382 static const int kCodeAgeShift = 4; |
| 4372 static const int kCodeAgeMask = 0x7; | 4383 static const int kCodeAgeMask = 0x7; |
| 4373 static const int kOptimizationDisabled = 7; | 4384 static const int kOptimizationDisabled = 7; |
| 4385 static const int kStrictModeFunction = 8; |
| 4374 | 4386 |
| 4375 DISALLOW_IMPLICIT_CONSTRUCTORS(SharedFunctionInfo); | 4387 DISALLOW_IMPLICIT_CONSTRUCTORS(SharedFunctionInfo); |
| 4376 }; | 4388 }; |
| 4377 | 4389 |
| 4378 | 4390 |
| 4379 // JSFunction describes JavaScript functions. | 4391 // JSFunction describes JavaScript functions. |
| 4380 class JSFunction: public JSObject { | 4392 class JSFunction: public JSObject { |
| 4381 public: | 4393 public: |
| 4382 // [prototype_or_initial_map]: | 4394 // [prototype_or_initial_map]: |
| 4383 DECL_ACCESSORS(prototype_or_initial_map, Object) | 4395 DECL_ACCESSORS(prototype_or_initial_map, Object) |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4709 #endif | 4721 #endif |
| 4710 | 4722 |
| 4711 // Layout description. | 4723 // Layout description. |
| 4712 static const int kValueOffset = JSObject::kHeaderSize; | 4724 static const int kValueOffset = JSObject::kHeaderSize; |
| 4713 static const int kSize = kValueOffset + kPointerSize; | 4725 static const int kSize = kValueOffset + kPointerSize; |
| 4714 | 4726 |
| 4715 private: | 4727 private: |
| 4716 DISALLOW_IMPLICIT_CONSTRUCTORS(JSValue); | 4728 DISALLOW_IMPLICIT_CONSTRUCTORS(JSValue); |
| 4717 }; | 4729 }; |
| 4718 | 4730 |
| 4731 |
| 4732 // Representation of message objects used for error reporting through |
| 4733 // the API. The messages are formatted in JavaScript so this object is |
| 4734 // a real JavaScript object. The information used for formatting the |
| 4735 // error messages are not directly accessible from JavaScript to |
| 4736 // prevent leaking information to user code called during error |
| 4737 // formatting. |
| 4738 class JSMessageObject: public JSObject { |
| 4739 public: |
| 4740 // [type]: the type of error message. |
| 4741 DECL_ACCESSORS(type, String) |
| 4742 |
| 4743 // [arguments]: the arguments for formatting the error message. |
| 4744 DECL_ACCESSORS(arguments, JSArray) |
| 4745 |
| 4746 // [script]: the script from which the error message originated. |
| 4747 DECL_ACCESSORS(script, Object) |
| 4748 |
| 4749 // [stack_trace]: the stack trace for this error message. |
| 4750 DECL_ACCESSORS(stack_trace, Object) |
| 4751 |
| 4752 // [stack_frames]: an array of stack frames for this error object. |
| 4753 DECL_ACCESSORS(stack_frames, Object) |
| 4754 |
| 4755 // [start_position]: the start position in the script for the error message. |
| 4756 inline int start_position(); |
| 4757 inline void set_start_position(int value); |
| 4758 |
| 4759 // [end_position]: the end position in the script for the error message. |
| 4760 inline int end_position(); |
| 4761 inline void set_end_position(int value); |
| 4762 |
| 4763 // Casting. |
| 4764 static inline JSMessageObject* cast(Object* obj); |
| 4765 |
| 4766 // Dispatched behavior. |
| 4767 #ifdef OBJECT_PRINT |
| 4768 inline void JSMessageObjectPrint() { |
| 4769 JSMessageObjectPrint(stdout); |
| 4770 } |
| 4771 void JSMessageObjectPrint(FILE* out); |
| 4772 #endif |
| 4773 #ifdef DEBUG |
| 4774 void JSMessageObjectVerify(); |
| 4775 #endif |
| 4776 |
| 4777 // Layout description. |
| 4778 static const int kTypeOffset = JSObject::kHeaderSize; |
| 4779 static const int kArgumentsOffset = kTypeOffset + kPointerSize; |
| 4780 static const int kScriptOffset = kArgumentsOffset + kPointerSize; |
| 4781 static const int kStackTraceOffset = kScriptOffset + kPointerSize; |
| 4782 static const int kStackFramesOffset = kStackTraceOffset + kPointerSize; |
| 4783 static const int kStartPositionOffset = kStackFramesOffset + kPointerSize; |
| 4784 static const int kEndPositionOffset = kStartPositionOffset + kPointerSize; |
| 4785 static const int kSize = kEndPositionOffset + kPointerSize; |
| 4786 |
| 4787 typedef FixedBodyDescriptor<HeapObject::kMapOffset, |
| 4788 kStackFramesOffset + kPointerSize, |
| 4789 kSize> BodyDescriptor; |
| 4790 }; |
| 4791 |
| 4792 |
| 4719 // Regular expressions | 4793 // Regular expressions |
| 4720 // The regular expression holds a single reference to a FixedArray in | 4794 // The regular expression holds a single reference to a FixedArray in |
| 4721 // the kDataOffset field. | 4795 // the kDataOffset field. |
| 4722 // The FixedArray contains the following data: | 4796 // The FixedArray contains the following data: |
| 4723 // - tag : type of regexp implementation (not compiled yet, atom or irregexp) | 4797 // - tag : type of regexp implementation (not compiled yet, atom or irregexp) |
| 4724 // - reference to the original source string | 4798 // - reference to the original source string |
| 4725 // - reference to the original flag string | 4799 // - reference to the original flag string |
| 4726 // If it is an atom regexp | 4800 // If it is an atom regexp |
| 4727 // - a reference to a literal string to search for | 4801 // - a reference to a literal string to search for |
| 4728 // If it is an irregexp regexp: | 4802 // If it is an irregexp regexp: |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4847 static const int kPrefixSize = 0; | 4921 static const int kPrefixSize = 0; |
| 4848 static const int kEntrySize = 2; | 4922 static const int kEntrySize = 2; |
| 4849 }; | 4923 }; |
| 4850 | 4924 |
| 4851 | 4925 |
| 4852 class CompilationCacheTable: public HashTable<CompilationCacheShape, | 4926 class CompilationCacheTable: public HashTable<CompilationCacheShape, |
| 4853 HashTableKey*> { | 4927 HashTableKey*> { |
| 4854 public: | 4928 public: |
| 4855 // Find cached value for a string key, otherwise return null. | 4929 // Find cached value for a string key, otherwise return null. |
| 4856 Object* Lookup(String* src); | 4930 Object* Lookup(String* src); |
| 4857 Object* LookupEval(String* src, Context* context); | 4931 Object* LookupEval(String* src, Context* context, StrictModeFlag strict_mode); |
| 4858 Object* LookupRegExp(String* source, JSRegExp::Flags flags); | 4932 Object* LookupRegExp(String* source, JSRegExp::Flags flags); |
| 4859 MaybeObject* Put(String* src, Object* value); | 4933 MaybeObject* Put(String* src, Object* value); |
| 4860 MaybeObject* PutEval(String* src, Context* context, Object* value); | 4934 MaybeObject* PutEval(String* src, |
| 4935 Context* context, |
| 4936 SharedFunctionInfo* value); |
| 4861 MaybeObject* PutRegExp(String* src, JSRegExp::Flags flags, FixedArray* value); | 4937 MaybeObject* PutRegExp(String* src, JSRegExp::Flags flags, FixedArray* value); |
| 4862 | 4938 |
| 4863 // Remove given value from cache. | 4939 // Remove given value from cache. |
| 4864 void Remove(Object* value); | 4940 void Remove(Object* value); |
| 4865 | 4941 |
| 4866 static inline CompilationCacheTable* cast(Object* obj); | 4942 static inline CompilationCacheTable* cast(Object* obj); |
| 4867 | 4943 |
| 4868 private: | 4944 private: |
| 4869 DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheTable); | 4945 DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheTable); |
| 4870 }; | 4946 }; |
| (...skipping 1584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6455 } else { | 6531 } else { |
| 6456 value &= ~(1 << bit_position); | 6532 value &= ~(1 << bit_position); |
| 6457 } | 6533 } |
| 6458 return value; | 6534 return value; |
| 6459 } | 6535 } |
| 6460 }; | 6536 }; |
| 6461 | 6537 |
| 6462 } } // namespace v8::internal | 6538 } } // namespace v8::internal |
| 6463 | 6539 |
| 6464 #endif // V8_OBJECTS_H_ | 6540 #endif // V8_OBJECTS_H_ |
| OLD | NEW |