OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/compiler/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
6 | 6 |
7 #include "src/ast/scopes.h" | 7 #include "src/ast/scopes.h" |
8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 return le; | 230 return le; |
231 case kSignedGreaterThan: | 231 case kSignedGreaterThan: |
232 case kUnsignedGreaterThan: | 232 case kUnsignedGreaterThan: |
233 return gt; | 233 return gt; |
234 case kOverflow: | 234 case kOverflow: |
235 // Overflow checked for AddP/SubP only. | 235 // Overflow checked for AddP/SubP only. |
236 switch (op) { | 236 switch (op) { |
237 #if V8_TARGET_ARCH_S390X | 237 #if V8_TARGET_ARCH_S390X |
238 case kS390_Add: | 238 case kS390_Add: |
239 case kS390_Sub: | 239 case kS390_Sub: |
240 return lt; | |
241 #endif | 240 #endif |
242 case kS390_AddWithOverflow32: | 241 case kS390_AddWithOverflow32: |
243 case kS390_SubWithOverflow32: | 242 case kS390_SubWithOverflow32: |
244 #if V8_TARGET_ARCH_S390X | |
245 return ne; | |
246 #else | |
247 return lt; | 243 return lt; |
248 #endif | |
249 default: | 244 default: |
250 break; | 245 break; |
251 } | 246 } |
252 break; | 247 break; |
253 case kNotOverflow: | 248 case kNotOverflow: |
254 switch (op) { | 249 switch (op) { |
255 #if V8_TARGET_ARCH_S390X | 250 #if V8_TARGET_ARCH_S390X |
256 case kS390_Add: | 251 case kS390_Add: |
257 case kS390_Sub: | 252 case kS390_Sub: |
258 return ge; | |
259 #endif | 253 #endif |
260 case kS390_AddWithOverflow32: | 254 case kS390_AddWithOverflow32: |
261 case kS390_SubWithOverflow32: | 255 case kS390_SubWithOverflow32: |
262 #if V8_TARGET_ARCH_S390X | |
263 return eq; | |
264 #else | |
265 return ge; | 256 return ge; |
266 #endif | |
267 default: | 257 default: |
268 break; | 258 break; |
269 } | 259 } |
270 break; | 260 break; |
271 default: | 261 default: |
272 break; | 262 break; |
273 } | 263 } |
274 UNREACHABLE(); | 264 UNREACHABLE(); |
275 return kNoCondition; | 265 return kNoCondition; |
276 } | 266 } |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 if (HasRegisterInput(instr, 1)) { \ | 316 if (HasRegisterInput(instr, 1)) { \ |
327 __ SubAndCheckForOverflow(i.OutputRegister(), i.InputRegister(0), \ | 317 __ SubAndCheckForOverflow(i.OutputRegister(), i.InputRegister(0), \ |
328 i.InputRegister(1), kScratchReg, r0); \ | 318 i.InputRegister(1), kScratchReg, r0); \ |
329 } else { \ | 319 } else { \ |
330 __ AddAndCheckForOverflow(i.OutputRegister(), i.InputRegister(0), \ | 320 __ AddAndCheckForOverflow(i.OutputRegister(), i.InputRegister(0), \ |
331 -i.InputInt32(1), kScratchReg, r0); \ | 321 -i.InputInt32(1), kScratchReg, r0); \ |
332 } \ | 322 } \ |
333 } while (0) | 323 } while (0) |
334 | 324 |
335 #if V8_TARGET_ARCH_S390X | 325 #if V8_TARGET_ARCH_S390X |
336 #define ASSEMBLE_ADD_WITH_OVERFLOW32() \ | 326 #define ASSEMBLE_ADD_WITH_OVERFLOW32() \ |
337 do { \ | 327 do { \ |
338 ASSEMBLE_BINOP(AddP, AddP); \ | 328 ASSEMBLE_ADD_WITH_OVERFLOW(); \ |
339 __ TestIfInt32(i.OutputRegister(), r0); \ | 329 __ LoadAndTestP_ExtendSrc(kScratchReg, kScratchReg); \ |
340 } while (0) | 330 } while (0) |
341 | 331 |
342 #define ASSEMBLE_SUB_WITH_OVERFLOW32() \ | 332 #define ASSEMBLE_SUB_WITH_OVERFLOW32() \ |
343 do { \ | 333 do { \ |
344 ASSEMBLE_BINOP(SubP, SubP); \ | 334 ASSEMBLE_SUB_WITH_OVERFLOW(); \ |
345 __ TestIfInt32(i.OutputRegister(), r0); \ | 335 __ LoadAndTestP_ExtendSrc(kScratchReg, kScratchReg); \ |
346 } while (0) | 336 } while (0) |
347 #else | 337 #else |
348 #define ASSEMBLE_ADD_WITH_OVERFLOW32 ASSEMBLE_ADD_WITH_OVERFLOW | 338 #define ASSEMBLE_ADD_WITH_OVERFLOW32 ASSEMBLE_ADD_WITH_OVERFLOW |
349 #define ASSEMBLE_SUB_WITH_OVERFLOW32 ASSEMBLE_SUB_WITH_OVERFLOW | 339 #define ASSEMBLE_SUB_WITH_OVERFLOW32 ASSEMBLE_SUB_WITH_OVERFLOW |
350 #endif | 340 #endif |
351 | 341 |
352 #define ASSEMBLE_COMPARE(cmp_instr, cmpl_instr) \ | 342 #define ASSEMBLE_COMPARE(cmp_instr, cmpl_instr) \ |
353 do { \ | 343 do { \ |
354 if (HasRegisterInput(instr, 1)) { \ | 344 if (HasRegisterInput(instr, 1)) { \ |
355 if (i.CompareLogical()) { \ | 345 if (i.CompareLogical()) { \ |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 | 445 |
456 #define ASSEMBLE_STORE_INTEGER(asm_instr) \ | 446 #define ASSEMBLE_STORE_INTEGER(asm_instr) \ |
457 do { \ | 447 do { \ |
458 size_t index = 0; \ | 448 size_t index = 0; \ |
459 AddressingMode mode = kMode_None; \ | 449 AddressingMode mode = kMode_None; \ |
460 MemOperand operand = i.MemoryOperand(&mode, &index); \ | 450 MemOperand operand = i.MemoryOperand(&mode, &index); \ |
461 Register value = i.InputRegister(index); \ | 451 Register value = i.InputRegister(index); \ |
462 __ asm_instr(value, operand); \ | 452 __ asm_instr(value, operand); \ |
463 } while (0) | 453 } while (0) |
464 | 454 |
465 // TODO(mbrandy): fix paths that produce garbage in offset's upper 32-bits. | |
466 #define ASSEMBLE_CHECKED_LOAD_FLOAT(asm_instr, width) \ | 455 #define ASSEMBLE_CHECKED_LOAD_FLOAT(asm_instr, width) \ |
467 do { \ | 456 do { \ |
468 DoubleRegister result = i.OutputDoubleRegister(); \ | 457 DoubleRegister result = i.OutputDoubleRegister(); \ |
469 size_t index = 0; \ | 458 size_t index = 0; \ |
470 AddressingMode mode = kMode_None; \ | 459 AddressingMode mode = kMode_None; \ |
471 MemOperand operand = i.MemoryOperand(&mode, index); \ | 460 MemOperand operand = i.MemoryOperand(&mode, index); \ |
472 Register offset = operand.rb(); \ | 461 Register offset = operand.rb(); \ |
473 __ lgfr(offset, offset); \ | |
474 if (HasRegisterInput(instr, 2)) { \ | 462 if (HasRegisterInput(instr, 2)) { \ |
475 __ CmpLogical32(offset, i.InputRegister(2)); \ | 463 __ CmpLogical32(offset, i.InputRegister(2)); \ |
476 } else { \ | 464 } else { \ |
477 __ CmpLogical32(offset, i.InputImmediate(2)); \ | 465 __ CmpLogical32(offset, i.InputImmediate(2)); \ |
478 } \ | 466 } \ |
479 auto ool = new (zone()) OutOfLineLoadNAN##width(this, result); \ | 467 auto ool = new (zone()) OutOfLineLoadNAN##width(this, result); \ |
480 __ bge(ool->entry()); \ | 468 __ bge(ool->entry()); \ |
481 __ asm_instr(result, operand); \ | 469 __ asm_instr(result, operand); \ |
482 __ bind(ool->exit()); \ | 470 __ bind(ool->exit()); \ |
483 } while (0) | 471 } while (0) |
484 | 472 |
485 // TODO(mbrandy): fix paths that produce garbage in offset's upper 32-bits. | |
486 #define ASSEMBLE_CHECKED_LOAD_INTEGER(asm_instr) \ | 473 #define ASSEMBLE_CHECKED_LOAD_INTEGER(asm_instr) \ |
487 do { \ | 474 do { \ |
488 Register result = i.OutputRegister(); \ | 475 Register result = i.OutputRegister(); \ |
489 size_t index = 0; \ | 476 size_t index = 0; \ |
490 AddressingMode mode = kMode_None; \ | 477 AddressingMode mode = kMode_None; \ |
491 MemOperand operand = i.MemoryOperand(&mode, index); \ | 478 MemOperand operand = i.MemoryOperand(&mode, index); \ |
492 Register offset = operand.rb(); \ | 479 Register offset = operand.rb(); \ |
493 __ lgfr(offset, offset); \ | |
494 if (HasRegisterInput(instr, 2)) { \ | 480 if (HasRegisterInput(instr, 2)) { \ |
495 __ CmpLogical32(offset, i.InputRegister(2)); \ | 481 __ CmpLogical32(offset, i.InputRegister(2)); \ |
496 } else { \ | 482 } else { \ |
497 __ CmpLogical32(offset, i.InputImmediate(2)); \ | 483 __ CmpLogical32(offset, i.InputImmediate(2)); \ |
498 } \ | 484 } \ |
499 auto ool = new (zone()) OutOfLineLoadZero(this, result); \ | 485 auto ool = new (zone()) OutOfLineLoadZero(this, result); \ |
500 __ bge(ool->entry()); \ | 486 __ bge(ool->entry()); \ |
501 __ asm_instr(result, operand); \ | 487 __ asm_instr(result, operand); \ |
502 __ bind(ool->exit()); \ | 488 __ bind(ool->exit()); \ |
503 } while (0) | 489 } while (0) |
504 | 490 |
505 // TODO(mbrandy): fix paths that produce garbage in offset's upper 32-bits. | |
506 #define ASSEMBLE_CHECKED_STORE_FLOAT32() \ | 491 #define ASSEMBLE_CHECKED_STORE_FLOAT32() \ |
507 do { \ | 492 do { \ |
508 Label done; \ | 493 Label done; \ |
509 size_t index = 0; \ | 494 size_t index = 0; \ |
510 AddressingMode mode = kMode_None; \ | 495 AddressingMode mode = kMode_None; \ |
511 MemOperand operand = i.MemoryOperand(&mode, index); \ | 496 MemOperand operand = i.MemoryOperand(&mode, index); \ |
512 Register offset = operand.rb(); \ | 497 Register offset = operand.rb(); \ |
513 __ lgfr(offset, offset); \ | |
514 if (HasRegisterInput(instr, 2)) { \ | 498 if (HasRegisterInput(instr, 2)) { \ |
515 __ CmpLogical32(offset, i.InputRegister(2)); \ | 499 __ CmpLogical32(offset, i.InputRegister(2)); \ |
516 } else { \ | 500 } else { \ |
517 __ CmpLogical32(offset, i.InputImmediate(2)); \ | 501 __ CmpLogical32(offset, i.InputImmediate(2)); \ |
518 } \ | 502 } \ |
519 __ bge(&done); \ | 503 __ bge(&done); \ |
520 DoubleRegister value = i.InputDoubleRegister(3); \ | 504 DoubleRegister value = i.InputDoubleRegister(3); \ |
521 __ StoreFloat32(value, operand); \ | 505 __ StoreFloat32(value, operand); \ |
522 __ bind(&done); \ | 506 __ bind(&done); \ |
523 } while (0) | 507 } while (0) |
524 | 508 |
525 // TODO(mbrandy): fix paths that produce garbage in offset's upper 32-bits. | |
526 #define ASSEMBLE_CHECKED_STORE_DOUBLE() \ | 509 #define ASSEMBLE_CHECKED_STORE_DOUBLE() \ |
527 do { \ | 510 do { \ |
528 Label done; \ | 511 Label done; \ |
529 size_t index = 0; \ | 512 size_t index = 0; \ |
530 AddressingMode mode = kMode_None; \ | 513 AddressingMode mode = kMode_None; \ |
531 MemOperand operand = i.MemoryOperand(&mode, index); \ | 514 MemOperand operand = i.MemoryOperand(&mode, index); \ |
532 DCHECK_EQ(kMode_MRR, mode); \ | 515 DCHECK_EQ(kMode_MRR, mode); \ |
533 Register offset = operand.rb(); \ | 516 Register offset = operand.rb(); \ |
534 __ lgfr(offset, offset); \ | |
535 if (HasRegisterInput(instr, 2)) { \ | 517 if (HasRegisterInput(instr, 2)) { \ |
536 __ CmpLogical32(offset, i.InputRegister(2)); \ | 518 __ CmpLogical32(offset, i.InputRegister(2)); \ |
537 } else { \ | 519 } else { \ |
538 __ CmpLogical32(offset, i.InputImmediate(2)); \ | 520 __ CmpLogical32(offset, i.InputImmediate(2)); \ |
539 } \ | 521 } \ |
540 __ bge(&done); \ | 522 __ bge(&done); \ |
541 DoubleRegister value = i.InputDoubleRegister(3); \ | 523 DoubleRegister value = i.InputDoubleRegister(3); \ |
542 __ StoreDouble(value, operand); \ | 524 __ StoreDouble(value, operand); \ |
543 __ bind(&done); \ | 525 __ bind(&done); \ |
544 } while (0) | 526 } while (0) |
545 | 527 |
546 // TODO(mbrandy): fix paths that produce garbage in offset's upper 32-bits. | |
547 #define ASSEMBLE_CHECKED_STORE_INTEGER(asm_instr) \ | 528 #define ASSEMBLE_CHECKED_STORE_INTEGER(asm_instr) \ |
548 do { \ | 529 do { \ |
549 Label done; \ | 530 Label done; \ |
550 size_t index = 0; \ | 531 size_t index = 0; \ |
551 AddressingMode mode = kMode_None; \ | 532 AddressingMode mode = kMode_None; \ |
552 MemOperand operand = i.MemoryOperand(&mode, index); \ | 533 MemOperand operand = i.MemoryOperand(&mode, index); \ |
553 Register offset = operand.rb(); \ | 534 Register offset = operand.rb(); \ |
554 __ lgfr(offset, offset); \ | |
555 if (HasRegisterInput(instr, 2)) { \ | 535 if (HasRegisterInput(instr, 2)) { \ |
556 __ CmpLogical32(offset, i.InputRegister(2)); \ | 536 __ CmpLogical32(offset, i.InputRegister(2)); \ |
557 } else { \ | 537 } else { \ |
558 __ CmpLogical32(offset, i.InputImmediate(2)); \ | 538 __ CmpLogical32(offset, i.InputImmediate(2)); \ |
559 } \ | 539 } \ |
560 __ bge(&done); \ | 540 __ bge(&done); \ |
561 Register value = i.InputRegister(3); \ | 541 Register value = i.InputRegister(3); \ |
562 __ asm_instr(value, operand); \ | 542 __ asm_instr(value, operand); \ |
563 __ bind(&done); \ | 543 __ bind(&done); \ |
564 } while (0) | 544 } while (0) |
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1563 #endif | 1543 #endif |
1564 case kS390_LoadWordU8: | 1544 case kS390_LoadWordU8: |
1565 ASSEMBLE_LOAD_INTEGER(LoadlB); | 1545 ASSEMBLE_LOAD_INTEGER(LoadlB); |
1566 break; | 1546 break; |
1567 case kS390_LoadWordU16: | 1547 case kS390_LoadWordU16: |
1568 ASSEMBLE_LOAD_INTEGER(LoadLogicalHalfWordP); | 1548 ASSEMBLE_LOAD_INTEGER(LoadLogicalHalfWordP); |
1569 break; | 1549 break; |
1570 case kS390_LoadWordS16: | 1550 case kS390_LoadWordS16: |
1571 ASSEMBLE_LOAD_INTEGER(LoadHalfWordP); | 1551 ASSEMBLE_LOAD_INTEGER(LoadHalfWordP); |
1572 break; | 1552 break; |
| 1553 case kS390_LoadWordU32: |
| 1554 ASSEMBLE_LOAD_INTEGER(LoadlW); |
| 1555 break; |
1573 case kS390_LoadWordS32: | 1556 case kS390_LoadWordS32: |
1574 ASSEMBLE_LOAD_INTEGER(LoadW); | 1557 ASSEMBLE_LOAD_INTEGER(LoadW); |
1575 break; | 1558 break; |
1576 #if V8_TARGET_ARCH_S390X | 1559 #if V8_TARGET_ARCH_S390X |
1577 case kS390_LoadWord64: | 1560 case kS390_LoadWord64: |
1578 ASSEMBLE_LOAD_INTEGER(lg); | 1561 ASSEMBLE_LOAD_INTEGER(lg); |
1579 break; | 1562 break; |
1580 #endif | 1563 #endif |
1581 case kS390_LoadFloat32: | 1564 case kS390_LoadFloat32: |
1582 ASSEMBLE_LOAD_FLOAT(LoadFloat32); | 1565 ASSEMBLE_LOAD_FLOAT(LoadFloat32); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1615 case kCheckedLoadUint8: | 1598 case kCheckedLoadUint8: |
1616 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadlB); | 1599 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadlB); |
1617 break; | 1600 break; |
1618 case kCheckedLoadInt16: | 1601 case kCheckedLoadInt16: |
1619 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadHalfWordP); | 1602 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadHalfWordP); |
1620 break; | 1603 break; |
1621 case kCheckedLoadUint16: | 1604 case kCheckedLoadUint16: |
1622 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadLogicalHalfWordP); | 1605 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadLogicalHalfWordP); |
1623 break; | 1606 break; |
1624 case kCheckedLoadWord32: | 1607 case kCheckedLoadWord32: |
1625 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadW); | 1608 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadlW); |
1626 break; | 1609 break; |
1627 case kCheckedLoadWord64: | 1610 case kCheckedLoadWord64: |
1628 #if V8_TARGET_ARCH_S390X | 1611 #if V8_TARGET_ARCH_S390X |
1629 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadP); | 1612 ASSEMBLE_CHECKED_LOAD_INTEGER(LoadP); |
1630 #else | 1613 #else |
1631 UNREACHABLE(); | 1614 UNREACHABLE(); |
1632 #endif | 1615 #endif |
1633 break; | 1616 break; |
1634 case kCheckedLoadFloat32: | 1617 case kCheckedLoadFloat32: |
1635 ASSEMBLE_CHECKED_LOAD_FLOAT(LoadFloat32, 32); | 1618 ASSEMBLE_CHECKED_LOAD_FLOAT(LoadFloat32, 32); |
(...skipping 29 matching lines...) Expand all Loading... |
1665 case kAtomicLoadUint8: | 1648 case kAtomicLoadUint8: |
1666 __ LoadlB(i.OutputRegister(), i.MemoryOperand()); | 1649 __ LoadlB(i.OutputRegister(), i.MemoryOperand()); |
1667 break; | 1650 break; |
1668 case kAtomicLoadInt16: | 1651 case kAtomicLoadInt16: |
1669 __ LoadHalfWordP(i.OutputRegister(), i.MemoryOperand()); | 1652 __ LoadHalfWordP(i.OutputRegister(), i.MemoryOperand()); |
1670 break; | 1653 break; |
1671 case kAtomicLoadUint16: | 1654 case kAtomicLoadUint16: |
1672 __ LoadLogicalHalfWordP(i.OutputRegister(), i.MemoryOperand()); | 1655 __ LoadLogicalHalfWordP(i.OutputRegister(), i.MemoryOperand()); |
1673 break; | 1656 break; |
1674 case kAtomicLoadWord32: | 1657 case kAtomicLoadWord32: |
1675 __ Load(i.OutputRegister(), i.MemoryOperand()); | 1658 __ LoadlW(i.OutputRegister(), i.MemoryOperand()); |
1676 break; | 1659 break; |
1677 default: | 1660 default: |
1678 UNREACHABLE(); | 1661 UNREACHABLE(); |
1679 break; | 1662 break; |
1680 } | 1663 } |
1681 } // NOLINT(readability/fn_size) | 1664 } // NOLINT(readability/fn_size) |
1682 | 1665 |
1683 // Assembles branches after an instruction. | 1666 // Assembles branches after an instruction. |
1684 void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { | 1667 void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { |
1685 S390OperandConverter i(this, instr); | 1668 S390OperandConverter i(this, instr); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1767 UNREACHABLE(); | 1750 UNREACHABLE(); |
1768 break; | 1751 break; |
1769 } | 1752 } |
1770 __ bind(&done); | 1753 __ bind(&done); |
1771 } | 1754 } |
1772 | 1755 |
1773 void CodeGenerator::AssembleArchLookupSwitch(Instruction* instr) { | 1756 void CodeGenerator::AssembleArchLookupSwitch(Instruction* instr) { |
1774 S390OperandConverter i(this, instr); | 1757 S390OperandConverter i(this, instr); |
1775 Register input = i.InputRegister(0); | 1758 Register input = i.InputRegister(0); |
1776 for (size_t index = 2; index < instr->InputCount(); index += 2) { | 1759 for (size_t index = 2; index < instr->InputCount(); index += 2) { |
1777 __ CmpP(input, Operand(i.InputInt32(index + 0))); | 1760 __ Cmp32(input, Operand(i.InputInt32(index + 0))); |
1778 __ beq(GetLabel(i.InputRpo(index + 1))); | 1761 __ beq(GetLabel(i.InputRpo(index + 1))); |
1779 } | 1762 } |
1780 AssembleArchJump(i.InputRpo(1)); | 1763 AssembleArchJump(i.InputRpo(1)); |
1781 } | 1764 } |
1782 | 1765 |
1783 void CodeGenerator::AssembleArchTableSwitch(Instruction* instr) { | 1766 void CodeGenerator::AssembleArchTableSwitch(Instruction* instr) { |
1784 S390OperandConverter i(this, instr); | 1767 S390OperandConverter i(this, instr); |
1785 Register input = i.InputRegister(0); | 1768 Register input = i.InputRegister(0); |
1786 int32_t const case_count = static_cast<int32_t>(instr->InputCount() - 2); | 1769 int32_t const case_count = static_cast<int32_t>(instr->InputCount() - 2); |
1787 Label** cases = zone()->NewArray<Label*>(case_count); | 1770 Label** cases = zone()->NewArray<Label*>(case_count); |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2129 padding_size -= 2; | 2112 padding_size -= 2; |
2130 } | 2113 } |
2131 } | 2114 } |
2132 } | 2115 } |
2133 | 2116 |
2134 #undef __ | 2117 #undef __ |
2135 | 2118 |
2136 } // namespace compiler | 2119 } // namespace compiler |
2137 } // namespace internal | 2120 } // namespace internal |
2138 } // namespace v8 | 2121 } // namespace v8 |
OLD | NEW |