17b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers/* 27b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * Copyright (C) 2011 The Android Open Source Project 37b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * 47b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * Licensed under the Apache License, Version 2.0 (the "License"); 57b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * you may not use this file except in compliance with the License. 67b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * You may obtain a copy of the License at 77b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * 87b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * http://www.apache.org/licenses/LICENSE-2.0 97b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * 107b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * Unless required by applicable law or agreed to in writing, software 117b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * distributed under the License is distributed on an "AS IS" BASIS, 127b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * See the License for the specific language governing permissions and 147b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers * limitations under the License. 157b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers */ 167b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers 177b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers#include "instruction_flags.h" 187b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers 197b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers#include <string.h> 207b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers 217b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogersnamespace art { 227b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogersnamespace verifier { 237b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers 247b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogersstd::string InstructionFlags::ToString() const { 25b8c7859f21f5ae4c9b90f2ef2effc51967299737Ian Rogers char encoding[7]; 267b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers if (!IsOpcode()) { 27b8c7859f21f5ae4c9b90f2ef2effc51967299737Ian Rogers strncpy(encoding, "XXXXXX", sizeof(encoding)); 287b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers } else { 29b8c7859f21f5ae4c9b90f2ef2effc51967299737Ian Rogers strncpy(encoding, "------", sizeof(encoding)); 30b8c7859f21f5ae4c9b90f2ef2effc51967299737Ian Rogers if (IsVisited()) encoding[kVisited] = 'V'; 31b8c7859f21f5ae4c9b90f2ef2effc51967299737Ian Rogers if (IsChanged()) encoding[kChanged] = 'C'; 32b8c7859f21f5ae4c9b90f2ef2effc51967299737Ian Rogers if (IsInTry()) encoding[kInTry] = 'T'; 33b8c7859f21f5ae4c9b90f2ef2effc51967299737Ian Rogers if (IsBranchTarget()) encoding[kBranchTarget] = 'B'; 3402c42237741b5573f9d790a5a0f17f408dceb543Sameer Abu Asal if (IsCompileTimeInfoPoint()) encoding[kCompileTimeInfoPoint] = 'G'; 35b8c7859f21f5ae4c9b90f2ef2effc51967299737Ian Rogers if (IsReturn()) encoding[kReturn] = 'R'; 367b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers } 377b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers return encoding; 387b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers} 397b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers 407b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers} // namespace verifier 417b3ddd27c223fcce784314f78fda7f67dcb37730Ian Rogers} // namespace art 42