1331 _intrinsic_disabled = 4, // was requested but disabled (e.g., -XX:-InlineUnsafeOps)
1332 _intrinsic_virtual = 8, // was seen in the virtual form (rare)
1333 _intrinsic_both = 16 // was seen in the non-virtual form (usual)
1334 };
1335 // Update histogram. Return boolean if this is a first-time occurrence.
1336 static bool gather_intrinsic_statistics(vmIntrinsics::ID id,
1337 bool is_virtual, int flags) PRODUCT_RETURN0;
1338 static void print_intrinsic_statistics() PRODUCT_RETURN;
1339
1340 // Graph verification code
1341 // Walk the node list, verifying that there is a one-to-one
1342 // correspondence between Use-Def edges and Def-Use edges
1343 // The option no_dead_code enables stronger checks that the
1344 // graph is strongly connected from root in both directions.
1345 void verify_graph_edges(bool no_dead_code = false) PRODUCT_RETURN;
1346
1347 // End-of-run dumps.
1348 static void print_statistics() PRODUCT_RETURN;
1349
1350 // Dump formatted assembly
1351 void dump_asm(int *pcs = NULL, uint pc_limit = 0) PRODUCT_RETURN;
1352 void dump_pc(int *pcs, int pc_limit, Node *n);
1353
1354 // Verify ADLC assumptions during startup
1355 static void adlc_verification() PRODUCT_RETURN;
1356
1357 // Definitions of pd methods
1358 static void pd_compiler2_init();
1359
1360 // Static parse-time type checking logic for gen_subtype_check:
1361 enum { SSC_always_false, SSC_always_true, SSC_easy_test, SSC_full_test };
1362 int static_subtype_check(ciKlass* superk, ciKlass* subk);
1363
1364 static Node* conv_I2X_index(PhaseGVN* phase, Node* offset, const TypeInt* sizetype,
1365 // Optional control dependency (for example, on range check)
1366 Node* ctrl = NULL);
1367
1368 // Convert integer value to a narrowed long type dependent on ctrl (for example, a range check)
1369 static Node* constrained_convI2L(PhaseGVN* phase, Node* value, const TypeInt* itype, Node* ctrl);
1370
1371 // Auxiliary method for randomized fuzzing/stressing
|
1331 _intrinsic_disabled = 4, // was requested but disabled (e.g., -XX:-InlineUnsafeOps)
1332 _intrinsic_virtual = 8, // was seen in the virtual form (rare)
1333 _intrinsic_both = 16 // was seen in the non-virtual form (usual)
1334 };
1335 // Update histogram. Return boolean if this is a first-time occurrence.
1336 static bool gather_intrinsic_statistics(vmIntrinsics::ID id,
1337 bool is_virtual, int flags) PRODUCT_RETURN0;
1338 static void print_intrinsic_statistics() PRODUCT_RETURN;
1339
1340 // Graph verification code
1341 // Walk the node list, verifying that there is a one-to-one
1342 // correspondence between Use-Def edges and Def-Use edges
1343 // The option no_dead_code enables stronger checks that the
1344 // graph is strongly connected from root in both directions.
1345 void verify_graph_edges(bool no_dead_code = false) PRODUCT_RETURN;
1346
1347 // End-of-run dumps.
1348 static void print_statistics() PRODUCT_RETURN;
1349
1350 // Dump formatted assembly
1351 #if defined(SUPPORT_OPTO_ASSEMBLY)
1352 void dump_asm_on(outputStream* ost, int* pcs, uint pc_limit);
1353 void dump_asm(int* pcs = NULL, uint pc_limit = 0) { dump_asm_on(tty, pcs, pc_limit); }
1354 #else
1355 void dump_asm_on(outputStream* ost, int* pcs, uint pc_limit) { return; }
1356 void dump_asm(int* pcs = NULL, uint pc_limit = 0) { return; }
1357 #endif
1358 void dump_pc(int *pcs, int pc_limit, Node *n);
1359
1360 // Verify ADLC assumptions during startup
1361 static void adlc_verification() PRODUCT_RETURN;
1362
1363 // Definitions of pd methods
1364 static void pd_compiler2_init();
1365
1366 // Static parse-time type checking logic for gen_subtype_check:
1367 enum { SSC_always_false, SSC_always_true, SSC_easy_test, SSC_full_test };
1368 int static_subtype_check(ciKlass* superk, ciKlass* subk);
1369
1370 static Node* conv_I2X_index(PhaseGVN* phase, Node* offset, const TypeInt* sizetype,
1371 // Optional control dependency (for example, on range check)
1372 Node* ctrl = NULL);
1373
1374 // Convert integer value to a narrowed long type dependent on ctrl (for example, a range check)
1375 static Node* constrained_convI2L(PhaseGVN* phase, Node* value, const TypeInt* itype, Node* ctrl);
1376
1377 // Auxiliary method for randomized fuzzing/stressing
|