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 1384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1395 | 1395 |
1396 private: | 1396 private: |
1397 DISALLOW_COPY_AND_ASSIGN(ArrayNArgumentsConstructorStub); | 1397 DISALLOW_COPY_AND_ASSIGN(ArrayNArgumentsConstructorStub); |
1398 }; | 1398 }; |
1399 | 1399 |
1400 | 1400 |
1401 class KeyedStoreElementStub : public PlatformCodeStub { | 1401 class KeyedStoreElementStub : public PlatformCodeStub { |
1402 public: | 1402 public: |
1403 KeyedStoreElementStub(bool is_js_array, | 1403 KeyedStoreElementStub(bool is_js_array, |
1404 ElementsKind elements_kind, | 1404 ElementsKind elements_kind, |
1405 KeyedAccessGrowMode grow_mode) | 1405 KeyedAccessStoreMode store_mode) |
1406 : is_js_array_(is_js_array), | 1406 : is_js_array_(is_js_array), |
1407 elements_kind_(elements_kind), | 1407 elements_kind_(elements_kind), |
1408 grow_mode_(grow_mode), | 1408 store_mode_(store_mode), |
1409 fp_registers_(CanUseFPRegisters()) { } | 1409 fp_registers_(CanUseFPRegisters()) { } |
1410 | 1410 |
1411 Major MajorKey() { return KeyedStoreElement; } | 1411 Major MajorKey() { return KeyedStoreElement; } |
1412 int MinorKey() { | 1412 int MinorKey() { |
1413 return ElementsKindBits::encode(elements_kind_) | | 1413 return ElementsKindBits::encode(elements_kind_) | |
1414 IsJSArrayBits::encode(is_js_array_) | | 1414 IsJSArrayBits::encode(is_js_array_) | |
1415 GrowModeBits::encode(grow_mode_) | | 1415 StoreModeBits::encode(store_mode_) | |
1416 FPRegisters::encode(fp_registers_); | 1416 FPRegisters::encode(fp_registers_); |
1417 } | 1417 } |
1418 | 1418 |
1419 void Generate(MacroAssembler* masm); | 1419 void Generate(MacroAssembler* masm); |
1420 | 1420 |
1421 private: | 1421 private: |
1422 class ElementsKindBits: public BitField<ElementsKind, 0, 8> {}; | 1422 class ElementsKindBits: public BitField<ElementsKind, 0, 8> {}; |
1423 class GrowModeBits: public BitField<KeyedAccessGrowMode, 8, 1> {}; | 1423 class StoreModeBits: public BitField<KeyedAccessStoreMode, 8, 4> {}; |
1424 class IsJSArrayBits: public BitField<bool, 9, 1> {}; | 1424 class IsJSArrayBits: public BitField<bool, 12, 1> {}; |
1425 class FPRegisters: public BitField<bool, 10, 1> {}; | 1425 class FPRegisters: public BitField<bool, 13, 1> {}; |
1426 | 1426 |
1427 bool is_js_array_; | 1427 bool is_js_array_; |
1428 ElementsKind elements_kind_; | 1428 ElementsKind elements_kind_; |
1429 KeyedAccessGrowMode grow_mode_; | 1429 KeyedAccessStoreMode store_mode_; |
1430 bool fp_registers_; | 1430 bool fp_registers_; |
1431 | 1431 |
1432 DISALLOW_COPY_AND_ASSIGN(KeyedStoreElementStub); | 1432 DISALLOW_COPY_AND_ASSIGN(KeyedStoreElementStub); |
1433 }; | 1433 }; |
1434 | 1434 |
1435 | 1435 |
1436 class ToBooleanStub: public PlatformCodeStub { | 1436 class ToBooleanStub: public PlatformCodeStub { |
1437 public: | 1437 public: |
1438 enum Type { | 1438 enum Type { |
1439 UNDEFINED, | 1439 UNDEFINED, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1502 Types types_; | 1502 Types types_; |
1503 }; | 1503 }; |
1504 | 1504 |
1505 | 1505 |
1506 class ElementsTransitionAndStoreStub : public PlatformCodeStub { | 1506 class ElementsTransitionAndStoreStub : public PlatformCodeStub { |
1507 public: | 1507 public: |
1508 ElementsTransitionAndStoreStub(ElementsKind from, | 1508 ElementsTransitionAndStoreStub(ElementsKind from, |
1509 ElementsKind to, | 1509 ElementsKind to, |
1510 bool is_jsarray, | 1510 bool is_jsarray, |
1511 StrictModeFlag strict_mode, | 1511 StrictModeFlag strict_mode, |
1512 KeyedAccessGrowMode grow_mode) | 1512 KeyedAccessStoreMode store_mode) |
1513 : from_(from), | 1513 : from_(from), |
1514 to_(to), | 1514 to_(to), |
1515 is_jsarray_(is_jsarray), | 1515 is_jsarray_(is_jsarray), |
1516 strict_mode_(strict_mode), | 1516 strict_mode_(strict_mode), |
1517 grow_mode_(grow_mode) {} | 1517 store_mode_(store_mode) {} |
1518 | 1518 |
1519 private: | 1519 private: |
1520 class FromBits: public BitField<ElementsKind, 0, 8> {}; | 1520 class FromBits: public BitField<ElementsKind, 0, 8> {}; |
1521 class ToBits: public BitField<ElementsKind, 8, 8> {}; | 1521 class ToBits: public BitField<ElementsKind, 8, 8> {}; |
1522 class IsJSArrayBits: public BitField<bool, 16, 1> {}; | 1522 class IsJSArrayBits: public BitField<bool, 16, 1> {}; |
1523 class StrictModeBits: public BitField<StrictModeFlag, 17, 1> {}; | 1523 class StrictModeBits: public BitField<StrictModeFlag, 17, 1> {}; |
1524 class GrowModeBits: public BitField<KeyedAccessGrowMode, 18, 1> {}; | 1524 class StoreModeBits: public BitField<KeyedAccessStoreMode, 18, 4> {}; |
1525 | 1525 |
1526 Major MajorKey() { return ElementsTransitionAndStore; } | 1526 Major MajorKey() { return ElementsTransitionAndStore; } |
1527 int MinorKey() { | 1527 int MinorKey() { |
1528 return FromBits::encode(from_) | | 1528 return FromBits::encode(from_) | |
1529 ToBits::encode(to_) | | 1529 ToBits::encode(to_) | |
1530 IsJSArrayBits::encode(is_jsarray_) | | 1530 IsJSArrayBits::encode(is_jsarray_) | |
1531 StrictModeBits::encode(strict_mode_) | | 1531 StrictModeBits::encode(strict_mode_) | |
1532 GrowModeBits::encode(grow_mode_); | 1532 StoreModeBits::encode(store_mode_); |
1533 } | 1533 } |
1534 | 1534 |
1535 void Generate(MacroAssembler* masm); | 1535 void Generate(MacroAssembler* masm); |
1536 | 1536 |
1537 ElementsKind from_; | 1537 ElementsKind from_; |
1538 ElementsKind to_; | 1538 ElementsKind to_; |
1539 bool is_jsarray_; | 1539 bool is_jsarray_; |
1540 StrictModeFlag strict_mode_; | 1540 StrictModeFlag strict_mode_; |
1541 KeyedAccessGrowMode grow_mode_; | 1541 KeyedAccessStoreMode store_mode_; |
1542 | 1542 |
1543 DISALLOW_COPY_AND_ASSIGN(ElementsTransitionAndStoreStub); | 1543 DISALLOW_COPY_AND_ASSIGN(ElementsTransitionAndStoreStub); |
1544 }; | 1544 }; |
1545 | 1545 |
1546 | 1546 |
1547 class StoreArrayLiteralElementStub : public PlatformCodeStub { | 1547 class StoreArrayLiteralElementStub : public PlatformCodeStub { |
1548 public: | 1548 public: |
1549 StoreArrayLiteralElementStub() | 1549 StoreArrayLiteralElementStub() |
1550 : fp_registers_(CanUseFPRegisters()) { } | 1550 : fp_registers_(CanUseFPRegisters()) { } |
1551 | 1551 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1614 | 1614 |
1615 // The current function entry hook. | 1615 // The current function entry hook. |
1616 static FunctionEntryHook entry_hook_; | 1616 static FunctionEntryHook entry_hook_; |
1617 | 1617 |
1618 DISALLOW_COPY_AND_ASSIGN(ProfileEntryHookStub); | 1618 DISALLOW_COPY_AND_ASSIGN(ProfileEntryHookStub); |
1619 }; | 1619 }; |
1620 | 1620 |
1621 } } // namespace v8::internal | 1621 } } // namespace v8::internal |
1622 | 1622 |
1623 #endif // V8_CODE_STUBS_H_ | 1623 #endif // V8_CODE_STUBS_H_ |
OLD | NEW |