Lines Matching full:action
50 /// Compute the actions table and gather the first action index for each landing
56 // The action table follows the call-site table in the LSDA. The individual in computeActionsTable()
92 unsigned SizeActions = 0; // Total size of all action entries for a function in computeActionsTable()
101 // Size of one action entry (typeid + next action) in computeActionsTable()
132 ActionEntry Action = { ValueForTypeID, NextAction, PrevAction }; in computeActionsTable() local
133 Actions.push_back(Action); in computeActionsTable()
137 // Record the first action of the landing pad site. in computeActionsTable()
141 // Information used when creating the call-site table. The action record in computeActionsTable()
143 // action record, relative to the start of the actions table. This value is in computeActionsTable()
211 /// containing the call, a non-zero landing pad, and an appropriate action. The
213 /// the landing pad and the action. Calls marked 'nounwind' have no entry and
228 // call-sites following. The action table and type info table will be
319 if (Site.LPad == Prev.LPad && Site.Action == Prev.Action) { in computeCallSiteTable()
369 /// 2. The action table, in our case, is composed of pairs of type IDs and next
370 /// action offset. Starting with the action index from the landing pad
373 /// pad. Otherwise the next action is looked up. This chain is terminated
374 /// with a next action of zero. If no type id is found then the frame is
405 // Compute the actions table and gather the first action index for each in emitExceptionTable()
489 // call-site table (which marks the beginning of the action table). in emitExceptionTable()
504 // The Action table follows the call-site table. So we emit the in emitExceptionTable()
535 CallSiteTableSize += 12 + getULEB128Size(S.Action); in emitExceptionTable()
544 for (const ActionEntry &Action : Actions) { in emitExceptionTable() local
545 // Each action entry consists of two SLEB128 fields. in emitExceptionTable()
546 ActionTableSize += getSLEB128Size(Action.ValueForTypeID) + in emitExceptionTable()
547 getSLEB128Size(Action.NextAction); in emitExceptionTable()
558 + ActionTableSize; // Action table content. in emitExceptionTable()
607 // Offset of the first associated action record, relative to the start of in emitExceptionTable()
608 // the action table. This value is biased by 1 (1 indicates the start of in emitExceptionTable()
609 // the action table), and 0 indicates that there are no actions. in emitExceptionTable()
611 if (S.Action == 0) in emitExceptionTable()
612 Asm->OutStreamer->AddComment(" Action: cleanup"); in emitExceptionTable()
614 Asm->OutStreamer->AddComment(" Action: " + in emitExceptionTable()
615 Twine((S.Action - 1) / 2 + 1)); in emitExceptionTable()
617 Asm->emitULEB128(S.Action); in emitExceptionTable()
626 // for a given call, the first corresponding action record and corresponding in emitExceptionTable()
636 // * The first action record for that call site. in emitExceptionTable()
665 // end label. This offset is used to find the action table. in emitExceptionTable()
748 // Offset of the first associated action record, relative to the start in emitExceptionTable()
749 // of the action table. This value is biased by 1 (1 indicates the start in emitExceptionTable()
750 // of the action table), and 0 indicates that there are no actions. in emitExceptionTable()
752 if (S.Action == 0) in emitExceptionTable()
753 Asm->OutStreamer->AddComment(" On action: cleanup"); in emitExceptionTable()
755 Asm->OutStreamer->AddComment(" On action: " + in emitExceptionTable()
756 Twine((S.Action - 1) / 2 + 1)); in emitExceptionTable()
758 Asm->emitULEB128(S.Action); in emitExceptionTable()
764 // Emit the Action Table. in emitExceptionTable()
766 for (const ActionEntry &Action : Actions) { in emitExceptionTable() local
768 // Emit comments that decode the action table. in emitExceptionTable()
769 Asm->OutStreamer->AddComment(">> Action Record " + Twine(++Entry) + " <<"); in emitExceptionTable()
777 if (Action.ValueForTypeID > 0) in emitExceptionTable()
779 Twine(Action.ValueForTypeID)); in emitExceptionTable()
780 else if (Action.ValueForTypeID < 0) in emitExceptionTable()
782 Twine(Action.ValueForTypeID)); in emitExceptionTable()
786 Asm->emitSLEB128(Action.ValueForTypeID); in emitExceptionTable()
788 // Action Record in emitExceptionTable()
790 if (Action.Previous == unsigned(-1)) { in emitExceptionTable()
793 Asm->OutStreamer->AddComment(" Continue to action " + in emitExceptionTable()
794 Twine(Action.Previous + 1)); in emitExceptionTable()
797 Asm->emitSLEB128(Action.NextAction); in emitExceptionTable()