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

Side by Side Diff: src/objects.h

Issue 22184004: Desugar bitwise negation into XOR and kill all UnaryOp stuff. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased. Feedback. Created 7 years, 4 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 4763 matching lines...) Expand 10 before | Expand all | Expand 10 after
4774 V(BUILTIN) \ 4774 V(BUILTIN) \
4775 V(REGEXP) 4775 V(REGEXP)
4776 4776
4777 #define IC_KIND_LIST(V) \ 4777 #define IC_KIND_LIST(V) \
4778 V(LOAD_IC) \ 4778 V(LOAD_IC) \
4779 V(KEYED_LOAD_IC) \ 4779 V(KEYED_LOAD_IC) \
4780 V(CALL_IC) \ 4780 V(CALL_IC) \
4781 V(KEYED_CALL_IC) \ 4781 V(KEYED_CALL_IC) \
4782 V(STORE_IC) \ 4782 V(STORE_IC) \
4783 V(KEYED_STORE_IC) \ 4783 V(KEYED_STORE_IC) \
4784 V(UNARY_OP_IC) \
4785 V(BINARY_OP_IC) \ 4784 V(BINARY_OP_IC) \
4786 V(COMPARE_IC) \ 4785 V(COMPARE_IC) \
4787 V(COMPARE_NIL_IC) \ 4786 V(COMPARE_NIL_IC) \
4788 V(TO_BOOLEAN_IC) 4787 V(TO_BOOLEAN_IC)
4789 4788
4790 #define CODE_KIND_LIST(V) \ 4789 #define CODE_KIND_LIST(V) \
4791 NON_IC_KIND_LIST(V) \ 4790 NON_IC_KIND_LIST(V) \
4792 IC_KIND_LIST(V) 4791 IC_KIND_LIST(V)
4793 4792
4794 enum Kind { 4793 enum Kind {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
4893 inline Kind kind(); 4892 inline Kind kind();
4894 inline InlineCacheState ic_state(); // Only valid for IC stubs. 4893 inline InlineCacheState ic_state(); // Only valid for IC stubs.
4895 inline ExtraICState extra_ic_state(); // Only valid for IC stubs. 4894 inline ExtraICState extra_ic_state(); // Only valid for IC stubs.
4896 4895
4897 inline ExtraICState extended_extra_ic_state(); // Only valid for 4896 inline ExtraICState extended_extra_ic_state(); // Only valid for
4898 // non-call IC stubs. 4897 // non-call IC stubs.
4899 static bool needs_extended_extra_ic_state(Kind kind) { 4898 static bool needs_extended_extra_ic_state(Kind kind) {
4900 // TODO(danno): This is a bit of a hack right now since there are still 4899 // TODO(danno): This is a bit of a hack right now since there are still
4901 // clients of this API that pass "extra" values in for argc. These clients 4900 // clients of this API that pass "extra" values in for argc. These clients
4902 // should be retrofitted to used ExtendedExtraICState. 4901 // should be retrofitted to used ExtendedExtraICState.
4903 return kind == COMPARE_NIL_IC || kind == TO_BOOLEAN_IC || 4902 return kind == COMPARE_NIL_IC || kind == TO_BOOLEAN_IC;
4904 kind == UNARY_OP_IC;
4905 } 4903 }
4906 4904
4907 inline StubType type(); // Only valid for monomorphic IC stubs. 4905 inline StubType type(); // Only valid for monomorphic IC stubs.
4908 inline int arguments_count(); // Only valid for call IC stubs. 4906 inline int arguments_count(); // Only valid for call IC stubs.
4909 4907
4910 // Testers for IC stub kinds. 4908 // Testers for IC stub kinds.
4911 inline bool is_inline_cache_stub(); 4909 inline bool is_inline_cache_stub();
4912 inline bool is_debug_break(); 4910 inline bool is_debug_break();
4913 inline bool is_load_stub() { return kind() == LOAD_IC; } 4911 inline bool is_load_stub() { return kind() == LOAD_IC; }
4914 inline bool is_keyed_load_stub() { return kind() == KEYED_LOAD_IC; } 4912 inline bool is_keyed_load_stub() { return kind() == KEYED_LOAD_IC; }
4915 inline bool is_store_stub() { return kind() == STORE_IC; } 4913 inline bool is_store_stub() { return kind() == STORE_IC; }
4916 inline bool is_keyed_store_stub() { return kind() == KEYED_STORE_IC; } 4914 inline bool is_keyed_store_stub() { return kind() == KEYED_STORE_IC; }
4917 inline bool is_call_stub() { return kind() == CALL_IC; } 4915 inline bool is_call_stub() { return kind() == CALL_IC; }
4918 inline bool is_keyed_call_stub() { return kind() == KEYED_CALL_IC; } 4916 inline bool is_keyed_call_stub() { return kind() == KEYED_CALL_IC; }
4919 inline bool is_unary_op_stub() { return kind() == UNARY_OP_IC; }
4920 inline bool is_binary_op_stub() { return kind() == BINARY_OP_IC; } 4917 inline bool is_binary_op_stub() { return kind() == BINARY_OP_IC; }
4921 inline bool is_compare_ic_stub() { return kind() == COMPARE_IC; } 4918 inline bool is_compare_ic_stub() { return kind() == COMPARE_IC; }
4922 inline bool is_compare_nil_ic_stub() { return kind() == COMPARE_NIL_IC; } 4919 inline bool is_compare_nil_ic_stub() { return kind() == COMPARE_NIL_IC; }
4923 inline bool is_to_boolean_ic_stub() { return kind() == TO_BOOLEAN_IC; } 4920 inline bool is_to_boolean_ic_stub() { return kind() == TO_BOOLEAN_IC; }
4924 4921
4925 // [major_key]: For kind STUB or BINARY_OP_IC, the major key. 4922 // [major_key]: For kind STUB or BINARY_OP_IC, the major key.
4926 inline int major_key(); 4923 inline int major_key();
4927 inline void set_major_key(int value); 4924 inline void set_major_key(int value);
4928 4925
4929 // For kind STUB or ICs, tells whether or not a code object was generated by 4926 // For kind STUB or ICs, tells whether or not a code object was generated by
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
4983 inline void set_back_edge_table_offset(unsigned offset); 4980 inline void set_back_edge_table_offset(unsigned offset);
4984 4981
4985 inline bool back_edges_patched_for_osr(); 4982 inline bool back_edges_patched_for_osr();
4986 inline void set_back_edges_patched_for_osr(bool value); 4983 inline void set_back_edges_patched_for_osr(bool value);
4987 4984
4988 // [check type]: For kind CALL_IC, tells how to check if the 4985 // [check type]: For kind CALL_IC, tells how to check if the
4989 // receiver is valid for the given call. 4986 // receiver is valid for the given call.
4990 inline CheckType check_type(); 4987 inline CheckType check_type();
4991 inline void set_check_type(CheckType value); 4988 inline void set_check_type(CheckType value);
4992 4989
4993 // [type-recording unary op type]: For kind UNARY_OP_IC.
4994 inline byte unary_op_type();
4995 inline void set_unary_op_type(byte value);
4996
4997 // [to_boolean_foo]: For kind TO_BOOLEAN_IC tells what state the stub is in. 4990 // [to_boolean_foo]: For kind TO_BOOLEAN_IC tells what state the stub is in.
4998 inline byte to_boolean_state(); 4991 inline byte to_boolean_state();
4999 4992
5000 // [has_function_cache]: For kind STUB tells whether there is a function 4993 // [has_function_cache]: For kind STUB tells whether there is a function
5001 // cache is passed to the stub. 4994 // cache is passed to the stub.
5002 inline bool has_function_cache(); 4995 inline bool has_function_cache();
5003 inline void set_has_function_cache(bool flag); 4996 inline void set_has_function_cache(bool flag);
5004 4997
5005 4998
5006 // [marked_for_deoptimization]: For kind OPTIMIZED_FUNCTION tells whether 4999 // [marked_for_deoptimization]: For kind OPTIMIZED_FUNCTION tells whether
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
5225 class KindField: public BitField<Kind, 7, 4> {}; 5218 class KindField: public BitField<Kind, 7, 4> {};
5226 class IsPregeneratedField: public BitField<bool, 11, 1> {}; 5219 class IsPregeneratedField: public BitField<bool, 11, 1> {};
5227 class ExtraICStateField: public BitField<ExtraICState, 12, 5> {}; 5220 class ExtraICStateField: public BitField<ExtraICState, 12, 5> {};
5228 class ExtendedExtraICStateField: public BitField<ExtraICState, 12, 5221 class ExtendedExtraICStateField: public BitField<ExtraICState, 12,
5229 PlatformSmiTagging::kSmiValueSize - 12 + 1> {}; // NOLINT 5222 PlatformSmiTagging::kSmiValueSize - 12 + 1> {}; // NOLINT
5230 STATIC_ASSERT(ExtraICStateField::kShift == ExtendedExtraICStateField::kShift); 5223 STATIC_ASSERT(ExtraICStateField::kShift == ExtendedExtraICStateField::kShift);
5231 5224
5232 // KindSpecificFlags1 layout (STUB and OPTIMIZED_FUNCTION) 5225 // KindSpecificFlags1 layout (STUB and OPTIMIZED_FUNCTION)
5233 static const int kStackSlotsFirstBit = 0; 5226 static const int kStackSlotsFirstBit = 0;
5234 static const int kStackSlotsBitCount = 24; 5227 static const int kStackSlotsBitCount = 24;
5235 static const int kUnaryOpTypeFirstBit =
5236 kStackSlotsFirstBit + kStackSlotsBitCount;
5237 static const int kUnaryOpTypeBitCount = 3;
5238 static const int kHasFunctionCacheFirstBit = 5228 static const int kHasFunctionCacheFirstBit =
5239 kStackSlotsFirstBit + kStackSlotsBitCount; 5229 kStackSlotsFirstBit + kStackSlotsBitCount;
5240 static const int kHasFunctionCacheBitCount = 1; 5230 static const int kHasFunctionCacheBitCount = 1;
5241 static const int kMarkedForDeoptimizationFirstBit = 5231 static const int kMarkedForDeoptimizationFirstBit =
5242 kStackSlotsFirstBit + kStackSlotsBitCount + 1; 5232 kStackSlotsFirstBit + kStackSlotsBitCount + 1;
5243 static const int kMarkedForDeoptimizationBitCount = 1; 5233 static const int kMarkedForDeoptimizationBitCount = 1;
5244 5234
5245 STATIC_ASSERT(kStackSlotsFirstBit + kStackSlotsBitCount <= 32); 5235 STATIC_ASSERT(kStackSlotsFirstBit + kStackSlotsBitCount <= 32);
5246 STATIC_ASSERT(kUnaryOpTypeFirstBit + kUnaryOpTypeBitCount <= 32);
5247 STATIC_ASSERT(kHasFunctionCacheFirstBit + kHasFunctionCacheBitCount <= 32); 5236 STATIC_ASSERT(kHasFunctionCacheFirstBit + kHasFunctionCacheBitCount <= 32);
5248 STATIC_ASSERT(kMarkedForDeoptimizationFirstBit + 5237 STATIC_ASSERT(kMarkedForDeoptimizationFirstBit +
5249 kMarkedForDeoptimizationBitCount <= 32); 5238 kMarkedForDeoptimizationBitCount <= 32);
5250 5239
5251 class StackSlotsField: public BitField<int, 5240 class StackSlotsField: public BitField<int,
5252 kStackSlotsFirstBit, kStackSlotsBitCount> {}; // NOLINT 5241 kStackSlotsFirstBit, kStackSlotsBitCount> {}; // NOLINT
5253 class UnaryOpTypeField: public BitField<int,
5254 kUnaryOpTypeFirstBit, kUnaryOpTypeBitCount> {}; // NOLINT
5255 class HasFunctionCacheField: public BitField<bool, 5242 class HasFunctionCacheField: public BitField<bool,
5256 kHasFunctionCacheFirstBit, kHasFunctionCacheBitCount> {}; // NOLINT 5243 kHasFunctionCacheFirstBit, kHasFunctionCacheBitCount> {}; // NOLINT
5257 class MarkedForDeoptimizationField: public BitField<bool, 5244 class MarkedForDeoptimizationField: public BitField<bool,
5258 kMarkedForDeoptimizationFirstBit, 5245 kMarkedForDeoptimizationFirstBit,
5259 kMarkedForDeoptimizationBitCount> {}; // NOLINT 5246 kMarkedForDeoptimizationBitCount> {}; // NOLINT
5260 5247
5261 // KindSpecificFlags2 layout (ALL) 5248 // KindSpecificFlags2 layout (ALL)
5262 static const int kIsCrankshaftedBit = 0; 5249 static const int kIsCrankshaftedBit = 0;
5263 class IsCrankshaftedField: public BitField<bool, 5250 class IsCrankshaftedField: public BitField<bool,
5264 kIsCrankshaftedBit, 1> {}; // NOLINT 5251 kIsCrankshaftedBit, 1> {}; // NOLINT
(...skipping 4917 matching lines...) Expand 10 before | Expand all | Expand 10 after
10182 } else { 10169 } else {
10183 value &= ~(1 << bit_position); 10170 value &= ~(1 << bit_position);
10184 } 10171 }
10185 return value; 10172 return value;
10186 } 10173 }
10187 }; 10174 };
10188 10175
10189 } } // namespace v8::internal 10176 } } // namespace v8::internal
10190 10177
10191 #endif // V8_OBJECTS_H_ 10178 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/mips/lithium-mips.cc ('k') | src/objects-inl.h » ('j') | src/x64/lithium-codegen-x64.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698