| OLD | NEW |
| 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 27 matching lines...) Expand all Loading... |
| 38 namespace internal { | 38 namespace internal { |
| 39 | 39 |
| 40 // List of code stubs used on all platforms. | 40 // List of code stubs used on all platforms. |
| 41 #define CODE_STUB_LIST_ALL_PLATFORMS(V) \ | 41 #define CODE_STUB_LIST_ALL_PLATFORMS(V) \ |
| 42 V(CallFunction) \ | 42 V(CallFunction) \ |
| 43 V(CallConstruct) \ | 43 V(CallConstruct) \ |
| 44 V(BinaryOpIC) \ | 44 V(BinaryOpIC) \ |
| 45 V(BinaryOpICWithAllocationSite) \ | 45 V(BinaryOpICWithAllocationSite) \ |
| 46 V(BinaryOpWithAllocationSite) \ | 46 V(BinaryOpWithAllocationSite) \ |
| 47 V(StringAdd) \ | 47 V(StringAdd) \ |
| 48 V(NewStringAdd) \ | |
| 49 V(SubString) \ | 48 V(SubString) \ |
| 50 V(StringCompare) \ | 49 V(StringCompare) \ |
| 51 V(Compare) \ | 50 V(Compare) \ |
| 52 V(CompareIC) \ | 51 V(CompareIC) \ |
| 53 V(CompareNilIC) \ | 52 V(CompareNilIC) \ |
| 54 V(MathPow) \ | 53 V(MathPow) \ |
| 55 V(StringLength) \ | 54 V(StringLength) \ |
| 56 V(FunctionPrototype) \ | 55 V(FunctionPrototype) \ |
| 57 V(StoreArrayLength) \ | 56 V(StoreArrayLength) \ |
| 58 V(RecordWrite) \ | 57 V(RecordWrite) \ |
| (...skipping 12 matching lines...) Expand all Loading... |
| 71 V(CreateAllocationSite) \ | 70 V(CreateAllocationSite) \ |
| 72 V(ToBoolean) \ | 71 V(ToBoolean) \ |
| 73 V(ToNumber) \ | 72 V(ToNumber) \ |
| 74 V(ArgumentsAccess) \ | 73 V(ArgumentsAccess) \ |
| 75 V(RegExpConstructResult) \ | 74 V(RegExpConstructResult) \ |
| 76 V(NumberToString) \ | 75 V(NumberToString) \ |
| 77 V(DoubleToI) \ | 76 V(DoubleToI) \ |
| 78 V(CEntry) \ | 77 V(CEntry) \ |
| 79 V(JSEntry) \ | 78 V(JSEntry) \ |
| 80 V(KeyedLoadElement) \ | 79 V(KeyedLoadElement) \ |
| 80 V(ArrayPush) \ |
| 81 V(ArrayNoArgumentConstructor) \ | 81 V(ArrayNoArgumentConstructor) \ |
| 82 V(ArraySingleArgumentConstructor) \ | 82 V(ArraySingleArgumentConstructor) \ |
| 83 V(ArrayNArgumentsConstructor) \ | 83 V(ArrayNArgumentsConstructor) \ |
| 84 V(InternalArrayNoArgumentConstructor) \ | 84 V(InternalArrayNoArgumentConstructor) \ |
| 85 V(InternalArraySingleArgumentConstructor) \ | 85 V(InternalArraySingleArgumentConstructor) \ |
| 86 V(InternalArrayNArgumentsConstructor) \ | 86 V(InternalArrayNArgumentsConstructor) \ |
| 87 V(KeyedStoreElement) \ | 87 V(KeyedStoreElement) \ |
| 88 V(DebuggerStatement) \ | 88 V(DebuggerStatement) \ |
| 89 V(NameDictionaryLookup) \ | 89 V(NameDictionaryLookup) \ |
| 90 V(ElementsTransitionAndStore) \ | 90 V(ElementsTransitionAndStore) \ |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 virtual void AfterCall(MacroAssembler* masm) const = 0; | 445 virtual void AfterCall(MacroAssembler* masm) const = 0; |
| 446 | 446 |
| 447 protected: | 447 protected: |
| 448 RuntimeCallHelper() {} | 448 RuntimeCallHelper() {} |
| 449 | 449 |
| 450 private: | 450 private: |
| 451 DISALLOW_COPY_AND_ASSIGN(RuntimeCallHelper); | 451 DISALLOW_COPY_AND_ASSIGN(RuntimeCallHelper); |
| 452 }; | 452 }; |
| 453 | 453 |
| 454 | 454 |
| 455 // TODO(bmeurer): Move to the StringAddStub declaration once we're | |
| 456 // done with the translation to a hydrogen code stub. | |
| 457 enum StringAddFlags { | |
| 458 // Omit both parameter checks. | |
| 459 STRING_ADD_CHECK_NONE = 0, | |
| 460 // Check left parameter. | |
| 461 STRING_ADD_CHECK_LEFT = 1 << 0, | |
| 462 // Check right parameter. | |
| 463 STRING_ADD_CHECK_RIGHT = 1 << 1, | |
| 464 // Check both parameters. | |
| 465 STRING_ADD_CHECK_BOTH = STRING_ADD_CHECK_LEFT | STRING_ADD_CHECK_RIGHT | |
| 466 }; | |
| 467 | |
| 468 } } // namespace v8::internal | 455 } } // namespace v8::internal |
| 469 | 456 |
| 470 #if V8_TARGET_ARCH_IA32 | 457 #if V8_TARGET_ARCH_IA32 |
| 471 #include "ia32/code-stubs-ia32.h" | 458 #include "ia32/code-stubs-ia32.h" |
| 472 #elif V8_TARGET_ARCH_X64 | 459 #elif V8_TARGET_ARCH_X64 |
| 473 #include "x64/code-stubs-x64.h" | 460 #include "x64/code-stubs-x64.h" |
| 474 #elif V8_TARGET_ARCH_A64 | 461 #elif V8_TARGET_ARCH_A64 |
| 475 #include "a64/code-stubs-a64.h" | 462 #include "a64/code-stubs-a64.h" |
| 476 #elif V8_TARGET_ARCH_ARM | 463 #elif V8_TARGET_ARCH_ARM |
| 477 #include "arm/code-stubs-arm.h" | 464 #include "arm/code-stubs-arm.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 int NotMissMinorKey() { | 557 int NotMissMinorKey() { |
| 571 return StrictModeBits::encode(language_mode_ != CLASSIC_MODE) | | 558 return StrictModeBits::encode(language_mode_ != CLASSIC_MODE) | |
| 572 IsGeneratorBits::encode(is_generator_); | 559 IsGeneratorBits::encode(is_generator_); |
| 573 } | 560 } |
| 574 | 561 |
| 575 LanguageMode language_mode_; | 562 LanguageMode language_mode_; |
| 576 bool is_generator_; | 563 bool is_generator_; |
| 577 }; | 564 }; |
| 578 | 565 |
| 579 | 566 |
| 580 class FastNewContextStub : public PlatformCodeStub { | 567 class FastNewContextStub V8_FINAL : public HydrogenCodeStub { |
| 581 public: | 568 public: |
| 582 static const int kMaximumSlots = 64; | 569 static const int kMaximumSlots = 64; |
| 583 | 570 |
| 584 explicit FastNewContextStub(int slots) : slots_(slots) { | 571 explicit FastNewContextStub(int slots) : slots_(slots) { |
| 585 ASSERT(slots_ > 0 && slots_ <= kMaximumSlots); | 572 ASSERT(slots_ > 0 && slots_ <= kMaximumSlots); |
| 586 } | 573 } |
| 587 | 574 |
| 588 void Generate(MacroAssembler* masm); | 575 virtual Handle<Code> GenerateCode(Isolate* isolate); |
| 576 |
| 577 virtual void InitializeInterfaceDescriptor( |
| 578 Isolate* isolate, |
| 579 CodeStubInterfaceDescriptor* descriptor); |
| 580 |
| 581 static void InstallDescriptors(Isolate* isolate); |
| 582 |
| 583 int slots() const { return slots_; } |
| 584 |
| 585 virtual Major MajorKey() V8_OVERRIDE { return FastNewContext; } |
| 586 virtual int NotMissMinorKey() V8_OVERRIDE { return slots_; } |
| 587 |
| 588 // Parameters accessed via CodeStubGraphBuilder::GetParameter() |
| 589 static const int kFunction = 0; |
| 589 | 590 |
| 590 private: | 591 private: |
| 591 int slots_; | 592 int slots_; |
| 592 | |
| 593 Major MajorKey() { return FastNewContext; } | |
| 594 int MinorKey() { return slots_; } | |
| 595 }; | 593 }; |
| 596 | 594 |
| 597 | 595 |
| 598 class FastNewBlockContextStub : public PlatformCodeStub { | 596 class FastNewBlockContextStub : public PlatformCodeStub { |
| 599 public: | 597 public: |
| 600 static const int kMaximumSlots = 64; | 598 static const int kMaximumSlots = 64; |
| 601 | 599 |
| 602 explicit FastNewBlockContextStub(int slots) : slots_(slots) { | 600 explicit FastNewBlockContextStub(int slots) : slots_(slots) { |
| 603 ASSERT(slots_ > 0 && slots_ <= kMaximumSlots); | 601 ASSERT(slots_ > 0 && slots_ <= kMaximumSlots); |
| 604 } | 602 } |
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1059 virtual Handle<Code> GenerateCode(Isolate* isolate); | 1057 virtual Handle<Code> GenerateCode(Isolate* isolate); |
| 1060 | 1058 |
| 1061 private: | 1059 private: |
| 1062 virtual CodeStub::Major MajorKey() { return KeyedLoadField; } | 1060 virtual CodeStub::Major MajorKey() { return KeyedLoadField; } |
| 1063 }; | 1061 }; |
| 1064 | 1062 |
| 1065 | 1063 |
| 1066 class KeyedArrayCallStub: public HICStub { | 1064 class KeyedArrayCallStub: public HICStub { |
| 1067 public: | 1065 public: |
| 1068 KeyedArrayCallStub(bool holey, int argc) : HICStub(), argc_(argc) { | 1066 KeyedArrayCallStub(bool holey, int argc) : HICStub(), argc_(argc) { |
| 1069 bit_field_ = ContextualBits::encode(false) | HoleyBits::encode(holey); | 1067 bit_field_ = HoleyBits::encode(holey); |
| 1070 } | 1068 } |
| 1071 | 1069 |
| 1072 virtual Code::Kind kind() const { return Code::KEYED_CALL_IC; } | 1070 virtual Code::Kind kind() const { return Code::KEYED_CALL_IC; } |
| 1073 virtual ExtraICState GetExtraICState() { return bit_field_; } | 1071 virtual ExtraICState GetExtraICState() { return bit_field_; } |
| 1074 | 1072 |
| 1075 ElementsKind elements_kind() { | 1073 ElementsKind elements_kind() { |
| 1076 return HoleyBits::decode(bit_field_) ? FAST_HOLEY_ELEMENTS : FAST_ELEMENTS; | 1074 return HoleyBits::decode(bit_field_) ? FAST_HOLEY_ELEMENTS : FAST_ELEMENTS; |
| 1077 } | 1075 } |
| 1078 | 1076 |
| 1079 int argc() { return argc_; } | 1077 int argc() { return argc_; } |
| 1080 virtual int GetStubFlags() { return argc(); } | 1078 virtual int GetStubFlags() { return argc(); } |
| 1081 | 1079 |
| 1082 static bool IsHoley(Handle<Code> code) { | 1080 static bool IsHoley(Handle<Code> code) { |
| 1083 ExtraICState state = code->extra_ic_state(); | 1081 ExtraICState state = code->extra_ic_state(); |
| 1084 return HoleyBits::decode(state); | 1082 return HoleyBits::decode(state); |
| 1085 } | 1083 } |
| 1086 | 1084 |
| 1087 virtual void InitializeInterfaceDescriptor( | 1085 virtual void InitializeInterfaceDescriptor( |
| 1088 Isolate* isolate, | 1086 Isolate* isolate, |
| 1089 CodeStubInterfaceDescriptor* descriptor); | 1087 CodeStubInterfaceDescriptor* descriptor); |
| 1090 | 1088 |
| 1091 virtual Handle<Code> GenerateCode(Isolate* isolate); | 1089 virtual Handle<Code> GenerateCode(Isolate* isolate); |
| 1092 | 1090 |
| 1093 private: | 1091 private: |
| 1094 virtual int NotMissMinorKey() { | 1092 virtual int NotMissMinorKey() { |
| 1095 return GetExtraICState() | ArgcBits::encode(argc_); | 1093 return GetExtraICState() | ArgcBits::encode(argc_); |
| 1096 } | 1094 } |
| 1097 | 1095 |
| 1098 class ContextualBits: public BitField<bool, 0, 1> {}; | 1096 class HoleyBits: public BitField<bool, 0, 1> {}; |
| 1099 STATIC_ASSERT(IC::Contextual::kShift == ContextualBits::kShift); | 1097 STATIC_ASSERT(Code::kArgumentsBits <= kStubMinorKeyBits - 1); |
| 1100 STATIC_ASSERT(IC::Contextual::kSize == ContextualBits::kSize); | 1098 class ArgcBits: public BitField<int, 1, Code::kArgumentsBits> {}; |
| 1101 class HoleyBits: public BitField<bool, 1, 1> {}; | |
| 1102 STATIC_ASSERT(Code::kArgumentsBits <= kStubMinorKeyBits - 2); | |
| 1103 class ArgcBits: public BitField<int, 2, Code::kArgumentsBits> {}; | |
| 1104 virtual CodeStub::Major MajorKey() { return KeyedArrayCall; } | 1099 virtual CodeStub::Major MajorKey() { return KeyedArrayCall; } |
| 1105 int bit_field_; | 1100 int bit_field_; |
| 1106 int argc_; | 1101 int argc_; |
| 1107 }; | 1102 }; |
| 1108 | 1103 |
| 1109 | 1104 |
| 1110 class BinaryOpICStub : public HydrogenCodeStub { | 1105 class BinaryOpICStub : public HydrogenCodeStub { |
| 1111 public: | 1106 public: |
| 1112 BinaryOpICStub(Token::Value op, OverwriteMode mode) | 1107 BinaryOpICStub(Token::Value op, OverwriteMode mode) |
| 1113 : HydrogenCodeStub(UNINITIALIZED), state_(op, mode) {} | 1108 : HydrogenCodeStub(UNINITIALIZED), state_(op, mode) {} |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1155 private: | 1150 private: |
| 1156 static void GenerateAheadOfTime(Isolate* isolate, | 1151 static void GenerateAheadOfTime(Isolate* isolate, |
| 1157 const BinaryOpIC::State& state); | 1152 const BinaryOpIC::State& state); |
| 1158 | 1153 |
| 1159 BinaryOpIC::State state_; | 1154 BinaryOpIC::State state_; |
| 1160 | 1155 |
| 1161 DISALLOW_COPY_AND_ASSIGN(BinaryOpICStub); | 1156 DISALLOW_COPY_AND_ASSIGN(BinaryOpICStub); |
| 1162 }; | 1157 }; |
| 1163 | 1158 |
| 1164 | 1159 |
| 1160 class ArrayPushStub: public PlatformCodeStub { |
| 1161 public: |
| 1162 ArrayPushStub(ElementsKind kind, int argc) { |
| 1163 bit_field_ = ElementsKindBits::encode(kind) | ArgcBits::encode(argc); |
| 1164 } |
| 1165 |
| 1166 void Generate(MacroAssembler* masm); |
| 1167 |
| 1168 private: |
| 1169 int arguments_count() { return ArgcBits::decode(bit_field_); } |
| 1170 ElementsKind elements_kind() { |
| 1171 return ElementsKindBits::decode(bit_field_); |
| 1172 } |
| 1173 |
| 1174 virtual CodeStub::Major MajorKey() { return ArrayPush; } |
| 1175 virtual int MinorKey() { return bit_field_; } |
| 1176 |
| 1177 class ElementsKindBits: public BitField<ElementsKind, 0, 3> {}; |
| 1178 class ArgcBits: public BitField<int, 3, Code::kArgumentsBits> {}; |
| 1179 |
| 1180 int bit_field_; |
| 1181 }; |
| 1182 |
| 1183 |
| 1165 // TODO(bmeurer): Merge this into the BinaryOpICStub once we have proper tail | 1184 // TODO(bmeurer): Merge this into the BinaryOpICStub once we have proper tail |
| 1166 // call support for stubs in Hydrogen. | 1185 // call support for stubs in Hydrogen. |
| 1167 class BinaryOpICWithAllocationSiteStub V8_FINAL : public PlatformCodeStub { | 1186 class BinaryOpICWithAllocationSiteStub V8_FINAL : public PlatformCodeStub { |
| 1168 public: | 1187 public: |
| 1169 explicit BinaryOpICWithAllocationSiteStub(const BinaryOpIC::State& state) | 1188 explicit BinaryOpICWithAllocationSiteStub(const BinaryOpIC::State& state) |
| 1170 : state_(state) {} | 1189 : state_(state) {} |
| 1171 | 1190 |
| 1172 static void GenerateAheadOfTime(Isolate* isolate); | 1191 static void GenerateAheadOfTime(Isolate* isolate); |
| 1173 | 1192 |
| 1174 Handle<Code> GetCodeCopyFromTemplate(Isolate* isolate, | 1193 Handle<Code> GetCodeCopyFromTemplate(Isolate* isolate, |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1235 return BinaryOpWithAllocationSite; | 1254 return BinaryOpWithAllocationSite; |
| 1236 } | 1255 } |
| 1237 | 1256 |
| 1238 // Parameters accessed via CodeStubGraphBuilder::GetParameter() | 1257 // Parameters accessed via CodeStubGraphBuilder::GetParameter() |
| 1239 static const int kAllocationSite = 0; | 1258 static const int kAllocationSite = 0; |
| 1240 static const int kLeft = 1; | 1259 static const int kLeft = 1; |
| 1241 static const int kRight = 2; | 1260 static const int kRight = 2; |
| 1242 }; | 1261 }; |
| 1243 | 1262 |
| 1244 | 1263 |
| 1245 // TODO(bmeurer): Rename to StringAddStub once we dropped the old StringAddStub. | 1264 enum StringAddFlags { |
| 1246 class NewStringAddStub V8_FINAL : public HydrogenCodeStub { | 1265 // Omit both parameter checks. |
| 1266 STRING_ADD_CHECK_NONE = 0, |
| 1267 // Check left parameter. |
| 1268 STRING_ADD_CHECK_LEFT = 1 << 0, |
| 1269 // Check right parameter. |
| 1270 STRING_ADD_CHECK_RIGHT = 1 << 1, |
| 1271 // Check both parameters. |
| 1272 STRING_ADD_CHECK_BOTH = STRING_ADD_CHECK_LEFT | STRING_ADD_CHECK_RIGHT |
| 1273 }; |
| 1274 |
| 1275 |
| 1276 class StringAddStub V8_FINAL : public HydrogenCodeStub { |
| 1247 public: | 1277 public: |
| 1248 NewStringAddStub(StringAddFlags flags, PretenureFlag pretenure_flag) | 1278 StringAddStub(StringAddFlags flags, PretenureFlag pretenure_flag) |
| 1249 : bit_field_(StringAddFlagsBits::encode(flags) | | 1279 : bit_field_(StringAddFlagsBits::encode(flags) | |
| 1250 PretenureFlagBits::encode(pretenure_flag)) {} | 1280 PretenureFlagBits::encode(pretenure_flag)) {} |
| 1251 | 1281 |
| 1252 StringAddFlags flags() const { | 1282 StringAddFlags flags() const { |
| 1253 return StringAddFlagsBits::decode(bit_field_); | 1283 return StringAddFlagsBits::decode(bit_field_); |
| 1254 } | 1284 } |
| 1255 | 1285 |
| 1256 PretenureFlag pretenure_flag() const { | 1286 PretenureFlag pretenure_flag() const { |
| 1257 return PretenureFlagBits::decode(bit_field_); | 1287 return PretenureFlagBits::decode(bit_field_); |
| 1258 } | 1288 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1271 | 1301 |
| 1272 // Parameters accessed via CodeStubGraphBuilder::GetParameter() | 1302 // Parameters accessed via CodeStubGraphBuilder::GetParameter() |
| 1273 static const int kLeft = 0; | 1303 static const int kLeft = 0; |
| 1274 static const int kRight = 1; | 1304 static const int kRight = 1; |
| 1275 | 1305 |
| 1276 private: | 1306 private: |
| 1277 class StringAddFlagsBits: public BitField<StringAddFlags, 0, 2> {}; | 1307 class StringAddFlagsBits: public BitField<StringAddFlags, 0, 2> {}; |
| 1278 class PretenureFlagBits: public BitField<PretenureFlag, 2, 1> {}; | 1308 class PretenureFlagBits: public BitField<PretenureFlag, 2, 1> {}; |
| 1279 uint32_t bit_field_; | 1309 uint32_t bit_field_; |
| 1280 | 1310 |
| 1281 virtual Major MajorKey() V8_OVERRIDE { return NewStringAdd; } | 1311 virtual Major MajorKey() V8_OVERRIDE { return StringAdd; } |
| 1282 virtual int NotMissMinorKey() V8_OVERRIDE { return bit_field_; } | 1312 virtual int NotMissMinorKey() V8_OVERRIDE { return bit_field_; } |
| 1283 | 1313 |
| 1284 virtual void PrintBaseName(StringStream* stream) V8_OVERRIDE; | 1314 virtual void PrintBaseName(StringStream* stream) V8_OVERRIDE; |
| 1285 | 1315 |
| 1286 DISALLOW_COPY_AND_ASSIGN(NewStringAddStub); | 1316 DISALLOW_COPY_AND_ASSIGN(StringAddStub); |
| 1287 }; | 1317 }; |
| 1288 | 1318 |
| 1289 | 1319 |
| 1290 class ICCompareStub: public PlatformCodeStub { | 1320 class ICCompareStub: public PlatformCodeStub { |
| 1291 public: | 1321 public: |
| 1292 ICCompareStub(Token::Value op, | 1322 ICCompareStub(Token::Value op, |
| 1293 CompareIC::State left, | 1323 CompareIC::State left, |
| 1294 CompareIC::State right, | 1324 CompareIC::State right, |
| 1295 CompareIC::State handler) | 1325 CompareIC::State handler) |
| 1296 : op_(op), | 1326 : op_(op), |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1347 Token::Value op_; | 1377 Token::Value op_; |
| 1348 CompareIC::State left_; | 1378 CompareIC::State left_; |
| 1349 CompareIC::State right_; | 1379 CompareIC::State right_; |
| 1350 CompareIC::State state_; | 1380 CompareIC::State state_; |
| 1351 Handle<Map> known_map_; | 1381 Handle<Map> known_map_; |
| 1352 }; | 1382 }; |
| 1353 | 1383 |
| 1354 | 1384 |
| 1355 class CompareNilICStub : public HydrogenCodeStub { | 1385 class CompareNilICStub : public HydrogenCodeStub { |
| 1356 public: | 1386 public: |
| 1357 Handle<Type> GetType(Isolate* isolate, Handle<Map> map = Handle<Map>()); | 1387 Type* GetType(Zone* zone, Handle<Map> map = Handle<Map>()); |
| 1358 Handle<Type> GetInputType(Isolate* isolate, Handle<Map> map); | 1388 Type* GetInputType(Zone* zone, Handle<Map> map); |
| 1359 | 1389 |
| 1360 explicit CompareNilICStub(NilValue nil) : nil_value_(nil) { } | 1390 explicit CompareNilICStub(NilValue nil) : nil_value_(nil) { } |
| 1361 | 1391 |
| 1362 CompareNilICStub(ExtraICState ic_state, | 1392 CompareNilICStub(ExtraICState ic_state, |
| 1363 InitializationState init_state = INITIALIZED) | 1393 InitializationState init_state = INITIALIZED) |
| 1364 : HydrogenCodeStub(init_state), | 1394 : HydrogenCodeStub(init_state), |
| 1365 nil_value_(NilValueField::decode(ic_state)), | 1395 nil_value_(NilValueField::decode(ic_state)), |
| 1366 state_(State(TypesField::decode(ic_state))) { | 1396 state_(State(TypesField::decode(ic_state))) { |
| 1367 } | 1397 } |
| 1368 | 1398 |
| (...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2065 | 2095 |
| 2066 AllocationSiteOverrideMode override_mode() const { | 2096 AllocationSiteOverrideMode override_mode() const { |
| 2067 return AllocationSiteOverrideModeBits::decode(bit_field_); | 2097 return AllocationSiteOverrideModeBits::decode(bit_field_); |
| 2068 } | 2098 } |
| 2069 | 2099 |
| 2070 static void GenerateStubsAheadOfTime(Isolate* isolate); | 2100 static void GenerateStubsAheadOfTime(Isolate* isolate); |
| 2071 static void InstallDescriptors(Isolate* isolate); | 2101 static void InstallDescriptors(Isolate* isolate); |
| 2072 | 2102 |
| 2073 // Parameters accessed via CodeStubGraphBuilder::GetParameter() | 2103 // Parameters accessed via CodeStubGraphBuilder::GetParameter() |
| 2074 static const int kConstructor = 0; | 2104 static const int kConstructor = 0; |
| 2075 static const int kPropertyCell = 1; | 2105 static const int kAllocationSite = 1; |
| 2076 | 2106 |
| 2077 protected: | 2107 protected: |
| 2078 void BasePrintName(const char* name, StringStream* stream); | 2108 void BasePrintName(const char* name, StringStream* stream); |
| 2079 | 2109 |
| 2080 private: | 2110 private: |
| 2081 int NotMissMinorKey() { return bit_field_; } | 2111 int NotMissMinorKey() { return bit_field_; } |
| 2082 | 2112 |
| 2083 // Ensure data fits within available bits. | 2113 // Ensure data fits within available bits. |
| 2084 STATIC_ASSERT(LAST_ALLOCATION_SITE_OVERRIDE_MODE == 1); | 2114 STATIC_ASSERT(LAST_ALLOCATION_SITE_OVERRIDE_MODE == 1); |
| 2085 | 2115 |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2501 | 2531 |
| 2502 | 2532 |
| 2503 class CallDescriptors { | 2533 class CallDescriptors { |
| 2504 public: | 2534 public: |
| 2505 static void InitializeForIsolate(Isolate* isolate); | 2535 static void InitializeForIsolate(Isolate* isolate); |
| 2506 }; | 2536 }; |
| 2507 | 2537 |
| 2508 } } // namespace v8::internal | 2538 } } // namespace v8::internal |
| 2509 | 2539 |
| 2510 #endif // V8_CODE_STUBS_H_ | 2540 #endif // V8_CODE_STUBS_H_ |
| OLD | NEW |