1329 }; 1330 enum { 1331 log2_FLAG_LIMIT = 4 // checked by an assert at start-up 1332 }; 1333 1334 public: 1335 static ID ID_from(int raw_id) { 1336 assert(raw_id >= (int)_none && raw_id < (int)ID_LIMIT, 1337 "must be a valid intrinsic ID"); 1338 return (ID)raw_id; 1339 } 1340 1341 static const char* name_at(ID id); 1342 1343 private: 1344 static ID find_id_impl(vmSymbols::SID holder, 1345 vmSymbols::SID name, 1346 vmSymbols::SID sig, 1347 jshort flags); 1348 1349 public: 1350 // Given a method's class, name, signature, and access flags, report its ID. 1351 static ID find_id(vmSymbols::SID holder, 1352 vmSymbols::SID name, 1353 vmSymbols::SID sig, 1354 jshort flags) { 1355 ID id = find_id_impl(holder, name, sig, flags); 1356 #ifdef ASSERT 1357 // ID _none does not hold the following asserts. 1358 if (id == _none) return id; 1359 #endif 1360 assert( class_for(id) == holder, "correct id"); 1361 assert( name_for(id) == name, "correct id"); 1362 assert(signature_for(id) == sig, "correct id"); 1363 return id; 1364 } 1365 1366 static void verify_method(ID actual_id, Method* m) PRODUCT_RETURN; 1367 1368 // Find out the symbols behind an intrinsic: | 1329 }; 1330 enum { 1331 log2_FLAG_LIMIT = 4 // checked by an assert at start-up 1332 }; 1333 1334 public: 1335 static ID ID_from(int raw_id) { 1336 assert(raw_id >= (int)_none && raw_id < (int)ID_LIMIT, 1337 "must be a valid intrinsic ID"); 1338 return (ID)raw_id; 1339 } 1340 1341 static const char* name_at(ID id); 1342 1343 private: 1344 static ID find_id_impl(vmSymbols::SID holder, 1345 vmSymbols::SID name, 1346 vmSymbols::SID sig, 1347 jshort flags); 1348 1349 static bool is_id_in_list(vmIntrinsics::ID id, ccstr list); 1350 1351 public: 1352 // Given a method's class, name, signature, and access flags, report its ID. 1353 static ID find_id(vmSymbols::SID holder, 1354 vmSymbols::SID name, 1355 vmSymbols::SID sig, 1356 jshort flags) { 1357 ID id = find_id_impl(holder, name, sig, flags); 1358 #ifdef ASSERT 1359 // ID _none does not hold the following asserts. 1360 if (id == _none) return id; 1361 #endif 1362 assert( class_for(id) == holder, "correct id"); 1363 assert( name_for(id) == name, "correct id"); 1364 assert(signature_for(id) == sig, "correct id"); 1365 return id; 1366 } 1367 1368 static void verify_method(ID actual_id, Method* m) PRODUCT_RETURN; 1369 1370 // Find out the symbols behind an intrinsic: |