| OLD | NEW | 
|---|
| 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 477 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 488   for (int i = 0, length = inlined_closures->length(); | 488   for (int i = 0, length = inlined_closures->length(); | 
| 489        i < length; | 489        i < length; | 
| 490        i++) { | 490        i++) { | 
| 491     DefineDeoptimizationLiteral(inlined_closures->at(i)); | 491     DefineDeoptimizationLiteral(inlined_closures->at(i)); | 
| 492   } | 492   } | 
| 493 | 493 | 
| 494   inlined_function_count_ = deoptimization_literals_.length(); | 494   inlined_function_count_ = deoptimization_literals_.length(); | 
| 495 } | 495 } | 
| 496 | 496 | 
| 497 | 497 | 
|  | 498 void LCodeGen::RecordSafepoint( | 
|  | 499     LPointerMap* pointers, | 
|  | 500     Safepoint::Kind kind, | 
|  | 501     int arguments, | 
|  | 502     int deoptimization_index) { | 
|  | 503   const ZoneList<LOperand*>* operands = pointers->operands(); | 
|  | 504   Safepoint safepoint = safepoints_.DefineSafepoint(masm(), | 
|  | 505       kind, arguments, deoptimization_index); | 
|  | 506   for (int i = 0; i < operands->length(); i++) { | 
|  | 507     LOperand* pointer = operands->at(i); | 
|  | 508     if (pointer->IsStackSlot()) { | 
|  | 509       safepoint.DefinePointerSlot(pointer->index()); | 
|  | 510     } else if (pointer->IsRegister() && (kind & Safepoint::kWithRegisters)) { | 
|  | 511       safepoint.DefinePointerRegister(ToRegister(pointer)); | 
|  | 512     } | 
|  | 513   } | 
|  | 514   if (kind & Safepoint::kWithRegisters) { | 
|  | 515     // Register rsi always contains a pointer to the context. | 
|  | 516     safepoint.DefinePointerRegister(rsi); | 
|  | 517   } | 
|  | 518 } | 
|  | 519 | 
|  | 520 | 
| 498 void LCodeGen::RecordSafepoint(LPointerMap* pointers, | 521 void LCodeGen::RecordSafepoint(LPointerMap* pointers, | 
| 499                                int deoptimization_index) { | 522                                int deoptimization_index) { | 
| 500   const ZoneList<LOperand*>* operands = pointers->operands(); | 523   RecordSafepoint(pointers, Safepoint::kSimple, 0, deoptimization_index); | 
| 501   Safepoint safepoint = safepoints_.DefineSafepoint(masm(), |  | 
| 502                                                     deoptimization_index); |  | 
| 503   for (int i = 0; i < operands->length(); i++) { |  | 
| 504     LOperand* pointer = operands->at(i); |  | 
| 505     if (pointer->IsStackSlot()) { |  | 
| 506       safepoint.DefinePointerSlot(pointer->index()); |  | 
| 507     } |  | 
| 508   } |  | 
| 509 } | 524 } | 
| 510 | 525 | 
| 511 | 526 | 
| 512 void LCodeGen::RecordSafepointWithRegisters(LPointerMap* pointers, | 527 void LCodeGen::RecordSafepointWithRegisters(LPointerMap* pointers, | 
| 513                                             int arguments, | 528                                             int arguments, | 
| 514                                             int deoptimization_index) { | 529                                             int deoptimization_index) { | 
| 515   const ZoneList<LOperand*>* operands = pointers->operands(); | 530   RecordSafepoint(pointers, Safepoint::kWithRegisters, arguments, | 
| 516   Safepoint safepoint = | 531       deoptimization_index); | 
| 517       safepoints_.DefineSafepointWithRegisters( |  | 
| 518           masm(), arguments, deoptimization_index); |  | 
| 519   for (int i = 0; i < operands->length(); i++) { |  | 
| 520     LOperand* pointer = operands->at(i); |  | 
| 521     if (pointer->IsStackSlot()) { |  | 
| 522       safepoint.DefinePointerSlot(pointer->index()); |  | 
| 523     } else if (pointer->IsRegister()) { |  | 
| 524       safepoint.DefinePointerRegister(ToRegister(pointer)); |  | 
| 525     } |  | 
| 526   } |  | 
| 527   // Register rsi always contains a pointer to the context. |  | 
| 528   safepoint.DefinePointerRegister(rsi); |  | 
| 529 } | 532 } | 
| 530 | 533 | 
| 531 | 534 | 
| 532 void LCodeGen::RecordPosition(int position) { | 535 void LCodeGen::RecordPosition(int position) { | 
| 533   if (!FLAG_debug_info || position == RelocInfo::kNoPosition) return; | 536   if (!FLAG_debug_info || position == RelocInfo::kNoPosition) return; | 
| 534   masm()->positions_recorder()->RecordPosition(position); | 537   masm()->positions_recorder()->RecordPosition(position); | 
| 535 } | 538 } | 
| 536 | 539 | 
| 537 | 540 | 
| 538 void LCodeGen::DoLabel(LLabel* label) { | 541 void LCodeGen::DoLabel(LLabel* label) { | 
| (...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1891 | 1894 | 
| 1892 void LCodeGen::DoOsrEntry(LOsrEntry* instr) { | 1895 void LCodeGen::DoOsrEntry(LOsrEntry* instr) { | 
| 1893   Abort("Unimplemented: %s", "DoOsrEntry"); | 1896   Abort("Unimplemented: %s", "DoOsrEntry"); | 
| 1894 } | 1897 } | 
| 1895 | 1898 | 
| 1896 #undef __ | 1899 #undef __ | 
| 1897 | 1900 | 
| 1898 } }  // namespace v8::internal | 1901 } }  // namespace v8::internal | 
| 1899 | 1902 | 
| 1900 #endif  // V8_TARGET_ARCH_X64 | 1903 #endif  // V8_TARGET_ARCH_X64 | 
| OLD | NEW | 
|---|