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

Side by Side Diff: src/objects.h

Issue 6879081: Added type recording for unary minus and unary bitwise negation. Note that the (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Incorporated Florian's suggested changes Created 9 years, 8 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 | Annotate | Revision Log
OLDNEW
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 3258 matching lines...) Expand 10 before | Expand all | Expand 10 after
3269 STUB, 3269 STUB,
3270 BUILTIN, 3270 BUILTIN,
3271 LOAD_IC, 3271 LOAD_IC,
3272 KEYED_LOAD_IC, 3272 KEYED_LOAD_IC,
3273 KEYED_EXTERNAL_ARRAY_LOAD_IC, 3273 KEYED_EXTERNAL_ARRAY_LOAD_IC,
3274 CALL_IC, 3274 CALL_IC,
3275 KEYED_CALL_IC, 3275 KEYED_CALL_IC,
3276 STORE_IC, 3276 STORE_IC,
3277 KEYED_STORE_IC, 3277 KEYED_STORE_IC,
3278 KEYED_EXTERNAL_ARRAY_STORE_IC, 3278 KEYED_EXTERNAL_ARRAY_STORE_IC,
3279 TYPE_RECORDING_UNARY_OP_IC,
3279 TYPE_RECORDING_BINARY_OP_IC, 3280 TYPE_RECORDING_BINARY_OP_IC,
3280 COMPARE_IC, 3281 COMPARE_IC,
3281 // No more than 16 kinds. The value currently encoded in four bits in 3282 // No more than 16 kinds. The value currently encoded in four bits in
3282 // Flags. 3283 // Flags.
3283 3284
3284 // Pseudo-kinds. 3285 // Pseudo-kinds.
3285 REGEXP = BUILTIN, 3286 REGEXP = BUILTIN,
3286 FIRST_IC_KIND = LOAD_IC, 3287 FIRST_IC_KIND = LOAD_IC,
3287 LAST_IC_KIND = COMPARE_IC 3288 LAST_IC_KIND = COMPARE_IC
3288 }; 3289 };
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
3337 inline int arguments_count(); // Only valid for call IC stubs. 3338 inline int arguments_count(); // Only valid for call IC stubs.
3338 3339
3339 // Testers for IC stub kinds. 3340 // Testers for IC stub kinds.
3340 inline bool is_inline_cache_stub(); 3341 inline bool is_inline_cache_stub();
3341 inline bool is_load_stub() { return kind() == LOAD_IC; } 3342 inline bool is_load_stub() { return kind() == LOAD_IC; }
3342 inline bool is_keyed_load_stub() { return kind() == KEYED_LOAD_IC; } 3343 inline bool is_keyed_load_stub() { return kind() == KEYED_LOAD_IC; }
3343 inline bool is_store_stub() { return kind() == STORE_IC; } 3344 inline bool is_store_stub() { return kind() == STORE_IC; }
3344 inline bool is_keyed_store_stub() { return kind() == KEYED_STORE_IC; } 3345 inline bool is_keyed_store_stub() { return kind() == KEYED_STORE_IC; }
3345 inline bool is_call_stub() { return kind() == CALL_IC; } 3346 inline bool is_call_stub() { return kind() == CALL_IC; }
3346 inline bool is_keyed_call_stub() { return kind() == KEYED_CALL_IC; } 3347 inline bool is_keyed_call_stub() { return kind() == KEYED_CALL_IC; }
3348 inline bool is_type_recording_unary_op_stub() {
3349 return kind() == TYPE_RECORDING_UNARY_OP_IC;
3350 }
3347 inline bool is_type_recording_binary_op_stub() { 3351 inline bool is_type_recording_binary_op_stub() {
3348 return kind() == TYPE_RECORDING_BINARY_OP_IC; 3352 return kind() == TYPE_RECORDING_BINARY_OP_IC;
3349 } 3353 }
3350 inline bool is_compare_ic_stub() { return kind() == COMPARE_IC; } 3354 inline bool is_compare_ic_stub() { return kind() == COMPARE_IC; }
3351 inline bool is_external_array_load_stub() { 3355 inline bool is_external_array_load_stub() {
3352 return kind() == KEYED_EXTERNAL_ARRAY_LOAD_IC; 3356 return kind() == KEYED_EXTERNAL_ARRAY_LOAD_IC;
3353 } 3357 }
3354 inline bool is_external_array_store_stub() { 3358 inline bool is_external_array_store_stub() {
3355 return kind() == KEYED_EXTERNAL_ARRAY_STORE_IC; 3359 return kind() == KEYED_EXTERNAL_ARRAY_STORE_IC;
3356 } 3360 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3394 // receiver is valid for the given call. 3398 // receiver is valid for the given call.
3395 inline CheckType check_type(); 3399 inline CheckType check_type();
3396 inline void set_check_type(CheckType value); 3400 inline void set_check_type(CheckType value);
3397 3401
3398 // [external array type]: For kind KEYED_EXTERNAL_ARRAY_LOAD_IC and 3402 // [external array type]: For kind KEYED_EXTERNAL_ARRAY_LOAD_IC and
3399 // KEYED_EXTERNAL_ARRAY_STORE_IC, identifies the type of external 3403 // KEYED_EXTERNAL_ARRAY_STORE_IC, identifies the type of external
3400 // array that the code stub is specialized for. 3404 // array that the code stub is specialized for.
3401 inline ExternalArrayType external_array_type(); 3405 inline ExternalArrayType external_array_type();
3402 inline void set_external_array_type(ExternalArrayType value); 3406 inline void set_external_array_type(ExternalArrayType value);
3403 3407
3408 // [type-recording unary op type]: For all TYPE_RECORDING_UNARY_OP_IC.
3409 inline byte type_recording_unary_op_type();
3410 inline void set_type_recording_unary_op_type(byte value);
3411
3404 // [type-recording binary op type]: For all TYPE_RECORDING_BINARY_OP_IC. 3412 // [type-recording binary op type]: For all TYPE_RECORDING_BINARY_OP_IC.
3405 inline byte type_recording_binary_op_type(); 3413 inline byte type_recording_binary_op_type();
3406 inline void set_type_recording_binary_op_type(byte value); 3414 inline void set_type_recording_binary_op_type(byte value);
3407 inline byte type_recording_binary_op_result_type(); 3415 inline byte type_recording_binary_op_result_type();
3408 inline void set_type_recording_binary_op_result_type(byte value); 3416 inline void set_type_recording_binary_op_result_type(byte value);
3409 3417
3410 // [compare state]: For kind compare IC stubs, tells what state the 3418 // [compare state]: For kind compare IC stubs, tells what state the
3411 // stub is in. 3419 // stub is in.
3412 inline byte compare_state(); 3420 inline byte compare_state();
3413 inline void set_compare_state(byte value); 3421 inline void set_compare_state(byte value);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
3545 (kHeaderPaddingStart + kCodeAlignmentMask) & ~kCodeAlignmentMask; 3553 (kHeaderPaddingStart + kCodeAlignmentMask) & ~kCodeAlignmentMask;
3546 3554
3547 // Byte offsets within kKindSpecificFlagsOffset. 3555 // Byte offsets within kKindSpecificFlagsOffset.
3548 static const int kStubMajorKeyOffset = kKindSpecificFlagsOffset; 3556 static const int kStubMajorKeyOffset = kKindSpecificFlagsOffset;
3549 static const int kOptimizableOffset = kKindSpecificFlagsOffset; 3557 static const int kOptimizableOffset = kKindSpecificFlagsOffset;
3550 static const int kStackSlotsOffset = kKindSpecificFlagsOffset; 3558 static const int kStackSlotsOffset = kKindSpecificFlagsOffset;
3551 static const int kCheckTypeOffset = kKindSpecificFlagsOffset; 3559 static const int kCheckTypeOffset = kKindSpecificFlagsOffset;
3552 static const int kExternalArrayTypeOffset = kKindSpecificFlagsOffset; 3560 static const int kExternalArrayTypeOffset = kKindSpecificFlagsOffset;
3553 3561
3554 static const int kCompareStateOffset = kStubMajorKeyOffset + 1; 3562 static const int kCompareStateOffset = kStubMajorKeyOffset + 1;
3563 static const int kUnaryOpTypeOffset = kStubMajorKeyOffset + 1;
3555 static const int kBinaryOpTypeOffset = kStubMajorKeyOffset + 1; 3564 static const int kBinaryOpTypeOffset = kStubMajorKeyOffset + 1;
3556 static const int kHasDeoptimizationSupportOffset = kOptimizableOffset + 1; 3565 static const int kHasDeoptimizationSupportOffset = kOptimizableOffset + 1;
3557 3566
3558 static const int kBinaryOpReturnTypeOffset = kBinaryOpTypeOffset + 1; 3567 static const int kBinaryOpReturnTypeOffset = kBinaryOpTypeOffset + 1;
3559 static const int kAllowOSRAtLoopNestingLevelOffset = 3568 static const int kAllowOSRAtLoopNestingLevelOffset =
3560 kHasDeoptimizationSupportOffset + 1; 3569 kHasDeoptimizationSupportOffset + 1;
3561 3570
3562 static const int kSafepointTableOffsetOffset = kStackSlotsOffset + kIntSize; 3571 static const int kSafepointTableOffsetOffset = kStackSlotsOffset + kIntSize;
3563 static const int kStackCheckTableOffsetOffset = kStackSlotsOffset + kIntSize; 3572 static const int kStackCheckTableOffsetOffset = kStackSlotsOffset + kIntSize;
3564 3573
(...skipping 3140 matching lines...) Expand 10 before | Expand all | Expand 10 after
6705 } else { 6714 } else {
6706 value &= ~(1 << bit_position); 6715 value &= ~(1 << bit_position);
6707 } 6716 }
6708 return value; 6717 return value;
6709 } 6718 }
6710 }; 6719 };
6711 6720
6712 } } // namespace v8::internal 6721 } } // namespace v8::internal
6713 6722
6714 #endif // V8_OBJECTS_H_ 6723 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698