Java程序  |  285行  |  19.86 KB

/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

public class Main {

  static volatile Object s000, s001, s002, s003, s004, s005, s006, s007, s008, s009;
  static volatile Object s010, s011, s012, s013, s014, s015, s016, s017, s018, s019;
  static volatile Object s020, s021, s022, s023, s024, s025, s026, s027, s028, s029;
  static volatile Object s030, s031, s032, s033, s034, s035, s036, s037, s038, s039;
  static volatile Object s040, s041, s042, s043, s044, s045, s046, s047, s048, s049;
  static volatile Object s050, s051, s052, s053, s054, s055, s056, s057, s058, s059;
  static volatile Object s060, s061, s062, s063, s064, s065, s066, s067, s068, s069;
  static volatile Object s070, s071, s072, s073, s074, s075, s076, s077, s078, s079;
  static volatile Object s080, s081, s082, s083, s084, s085, s086, s087, s088, s089;
  static volatile Object s090, s091, s092, s093, s094, s095, s096, s097, s098, s099;

  static volatile Object s100, s101, s102, s103, s104, s105, s106, s107, s108, s109;
  static volatile Object s110, s111, s112, s113, s114, s115, s116, s117, s118, s119;
  static volatile Object s120, s121, s122, s123, s124, s125, s126, s127, s128, s129;
  static volatile Object s130, s131, s132, s133, s134, s135, s136, s137, s138, s139;
  static volatile Object s140, s141, s142, s143, s144, s145, s146, s147, s148, s149;
  static volatile Object s150, s151, s152, s153, s154, s155, s156, s157, s158, s159;
  static volatile Object s160, s161, s162, s163, s164, s165, s166, s167, s168, s169;
  static volatile Object s170, s171, s172, s173, s174, s175, s176, s177, s178, s179;
  static volatile Object s180, s181, s182, s183, s184, s185, s186, s187, s188, s189;
  static volatile Object s190, s191, s192, s193, s194, s195, s196, s197, s198, s199;

  static volatile Object s200, s201, s202, s203, s204, s205, s206, s207, s208, s209;
  static volatile Object s210, s211, s212, s213, s214, s215, s216, s217, s218, s219;
  static volatile Object s220, s221, s222, s223, s224, s225, s226, s227, s228, s229;
  static volatile Object s230, s231, s232, s233, s234, s235, s236, s237, s238, s239;
  static volatile Object s240, s241, s242, s243, s244, s245, s246, s247, s248, s249;
  static volatile Object s250, s251, s252, s253, s254, s255, s256, s257, s258, s259;
  static volatile Object s260, s261, s262, s263, s264, s265, s266, s267, s268, s269;
  static volatile Object s270, s271, s272, s273, s274, s275, s276, s277, s278, s279;
  static volatile Object s280, s281, s282, s283, s284, s285, s286, s287, s288, s289;
  static volatile Object s290, s291, s292, s293, s294, s295, s296, s297, s298, s299;

  static volatile Object s300, s301, s302, s303, s304, s305, s306, s307, s308, s309;
  static volatile Object s310, s311, s312, s313, s314, s315, s316, s317, s318, s319;
  static volatile Object s320, s321, s322, s323, s324, s325, s326, s327, s328, s329;
  static volatile Object s330, s331, s332, s333, s334, s335, s336, s337, s338, s339;
  static volatile Object s340, s341, s342, s343, s344, s345, s346, s347, s348, s349;
  static volatile Object s350, s351, s352, s353, s354, s355, s356, s357, s358, s359;
  static volatile Object s360, s361, s362, s363, s364, s365, s366, s367, s368, s369;
  static volatile Object s370, s371, s372, s373, s374, s375, s376, s377, s378, s379;
  static volatile Object s380, s381, s382, s383, s384, s385, s386, s387, s388, s389;
  static volatile Object s390, s391, s392, s393, s394, s395, s396, s397, s398, s399;

  static volatile Object s400, s401, s402, s403, s404, s405, s406, s407, s408, s409;
  static volatile Object s410, s411, s412, s413, s414, s415, s416, s417, s418, s419;
  static volatile Object s420, s421, s422, s423, s424, s425, s426, s427, s428, s429;
  static volatile Object s430, s431, s432, s433, s434, s435, s436, s437, s438, s439;
  static volatile Object s440, s441, s442, s443, s444, s445, s446, s447, s448, s449;
  static volatile Object s450, s451, s452, s453, s454, s455, s456, s457, s458, s459;
  static volatile Object s460, s461, s462, s463, s464, s465, s466, s467, s468, s469;
  static volatile Object s470, s471, s472, s473, s474, s475, s476, s477, s478, s479;
  static volatile Object s480, s481, s482, s483, s484, s485, s486, s487, s488, s489;
  static volatile Object s490, s491, s492, s493, s494, s495, s496, s497, s498, s499;

  static volatile Object s500, s501, s502, s503, s504, s505, s506, s507, s508, s509;
  static volatile Object s510, s511, s512, s513, s514, s515, s516, s517, s518, s519;
  static volatile Object s520, s521, s522, s523, s524, s525, s526, s527, s528, s529;
  static volatile Object s530, s531, s532, s533, s534, s535, s536, s537, s538, s539;
  static volatile Object s540, s541, s542, s543, s544, s545, s546, s547, s548, s549;
  static volatile Object s550, s551, s552, s553, s554, s555, s556, s557, s558, s559;
  static volatile Object s560, s561, s562, s563, s564, s565, s566, s567, s568, s569;
  static volatile Object s570, s571, s572, s573, s574, s575, s576, s577, s578, s579;
  static volatile Object s580, s581, s582, s583, s584, s585, s586, s587, s588, s589;
  static volatile Object s590, s591, s592, s593, s594, s595, s596, s597, s598, s599;

  static volatile Object s600, s601, s602, s603, s604, s605, s606, s607, s608, s609;
  static volatile Object s610, s611, s612, s613, s614, s615, s616, s617, s618, s619;
  static volatile Object s620, s621, s622, s623, s624, s625, s626, s627, s628, s629;
  static volatile Object s630, s631, s632, s633, s634, s635, s636, s637, s638, s639;
  static volatile Object s640, s641, s642, s643, s644, s645, s646, s647, s648, s649;
  static volatile Object s650, s651, s652, s653, s654, s655, s656, s657, s658, s659;
  static volatile Object s660, s661, s662, s663, s664, s665, s666, s667, s668, s669;
  static volatile Object s670, s671, s672, s673, s674, s675, s676, s677, s678, s679;
  static volatile Object s680, s681, s682, s683, s684, s685, s686, s687, s688, s689;
  static volatile Object s690, s691, s692, s693, s694, s695, s696, s697, s698, s699;

  static volatile Object s700, s701, s702, s703, s704, s705, s706, s707, s708, s709;
  static volatile Object s710, s711, s712, s713, s714, s715, s716, s717, s718, s719;
  static volatile Object s720, s721, s722, s723, s724, s725, s726, s727, s728, s729;
  static volatile Object s730, s731, s732, s733, s734, s735, s736, s737, s738, s739;
  static volatile Object s740, s741, s742, s743, s744, s745, s746, s747, s748, s749;
  static volatile Object s750, s751, s752, s753, s754, s755, s756, s757, s758, s759;
  static volatile Object s760, s761, s762, s763, s764, s765, s766, s767, s768, s769;
  static volatile Object s770, s771, s772, s773, s774, s775, s776, s777, s778, s779;
  static volatile Object s780, s781, s782, s783, s784, s785, s786, s787, s788, s789;
  static volatile Object s790, s791, s792, s793, s794, s795, s796, s797, s798, s799;

  static volatile Object s800, s801, s802, s803, s804, s805, s806, s807, s808, s809;
  static volatile Object s810, s811, s812, s813, s814, s815, s816, s817, s818, s819;
  static volatile Object s820, s821, s822, s823, s824, s825, s826, s827, s828, s829;
  static volatile Object s830, s831, s832, s833, s834, s835, s836, s837, s838, s839;
  static volatile Object s840, s841, s842, s843, s844, s845, s846, s847, s848, s849;
  static volatile Object s850, s851, s852, s853, s854, s855, s856, s857, s858, s859;
  static volatile Object s860, s861, s862, s863, s864, s865, s866, s867, s868, s869;
  static volatile Object s870, s871, s872, s873, s874, s875, s876, s877, s878, s879;
  static volatile Object s880, s881, s882, s883, s884, s885, s886, s887, s888, s889;
  static volatile Object s890, s891, s892, s893, s894, s895, s896, s897, s898, s899;

  static volatile Object s900, s901, s902, s903, s904, s905, s906, s907, s908, s909;
  static volatile Object s910, s911, s912, s913, s914, s915, s916, s917, s918, s919;
  static volatile Object s920, s921, s922, s923, s924, s925, s926, s927, s928, s929;
  static volatile Object s930, s931, s932, s933, s934, s935, s936, s937, s938, s939;
  static volatile Object s940, s941, s942, s943, s944, s945, s946, s947, s948, s949;
  static volatile Object s950, s951, s952, s953, s954, s955, s956, s957, s958, s959;
  static volatile Object s960, s961, s962, s963, s964, s965, s966, s967, s968, s969;
  static volatile Object s970, s971, s972, s973, s974, s975, s976, s977, s978, s979;
  static volatile Object s980, s981, s982, s983, s984, s985, s986, s987, s988, s989;
  static volatile Object s990, s991, s992, s993, s994, s995, s996, s997, s998, s999;


  volatile Object i0000, i0001, i0002, i0003, i0004, i0005, i0006, i0007, i0008, i0009;
  volatile Object i0010, i0011, i0012, i0013, i0014, i0015, i0016, i0017, i0018, i0019;
  volatile Object i0020, i0021, i0022, i0023, i0024, i0025, i0026, i0027, i0028, i0029;
  volatile Object i0030, i0031, i0032, i0033, i0034, i0035, i0036, i0037, i0038, i0039;
  volatile Object i0040, i0041, i0042, i0043, i0044, i0045, i0046, i0047, i0048, i0049;
  volatile Object i0050, i0051, i0052, i0053, i0054, i0055, i0056, i0057, i0058, i0059;
  volatile Object i0060, i0061, i0062, i0063, i0064, i0065, i0066, i0067, i0068, i0069;
  volatile Object i0070, i0071, i0072, i0073, i0074, i0075, i0076, i0077, i0078, i0079;
  volatile Object i0080, i0081, i0082, i0083, i0084, i0085, i0086, i0087, i0088, i0089;
  volatile Object i0090, i0091, i0092, i0093, i0094, i0095, i0096, i0097, i0098, i0099;

  volatile Object i0100, i0101, i0102, i0103, i0104, i0105, i0106, i0107, i0108, i0109;
  volatile Object i0110, i0111, i0112, i0113, i0114, i0115, i0116, i0117, i0118, i0119;
  volatile Object i0120, i0121, i0122, i0123, i0124, i0125, i0126, i0127, i0128, i0129;
  volatile Object i0130, i0131, i0132, i0133, i0134, i0135, i0136, i0137, i0138, i0139;
  volatile Object i0140, i0141, i0142, i0143, i0144, i0145, i0146, i0147, i0148, i0149;
  volatile Object i0150, i0151, i0152, i0153, i0154, i0155, i0156, i0157, i0158, i0159;
  volatile Object i0160, i0161, i0162, i0163, i0164, i0165, i0166, i0167, i0168, i0169;
  volatile Object i0170, i0171, i0172, i0173, i0174, i0175, i0176, i0177, i0178, i0179;
  volatile Object i0180, i0181, i0182, i0183, i0184, i0185, i0186, i0187, i0188, i0189;
  volatile Object i0190, i0191, i0192, i0193, i0194, i0195, i0196, i0197, i0198, i0199;

  volatile Object i0200, i0201, i0202, i0203, i0204, i0205, i0206, i0207, i0208, i0209;
  volatile Object i0210, i0211, i0212, i0213, i0214, i0215, i0216, i0217, i0218, i0219;
  volatile Object i0220, i0221, i0222, i0223, i0224, i0225, i0226, i0227, i0228, i0229;
  volatile Object i0230, i0231, i0232, i0233, i0234, i0235, i0236, i0237, i0238, i0239;
  volatile Object i0240, i0241, i0242, i0243, i0244, i0245, i0246, i0247, i0248, i0249;
  volatile Object i0250, i0251, i0252, i0253, i0254, i0255, i0256, i0257, i0258, i0259;
  volatile Object i0260, i0261, i0262, i0263, i0264, i0265, i0266, i0267, i0268, i0269;
  volatile Object i0270, i0271, i0272, i0273, i0274, i0275, i0276, i0277, i0278, i0279;
  volatile Object i0280, i0281, i0282, i0283, i0284, i0285, i0286, i0287, i0288, i0289;
  volatile Object i0290, i0291, i0292, i0293, i0294, i0295, i0296, i0297, i0298, i0299;

  volatile Object i0300, i0301, i0302, i0303, i0304, i0305, i0306, i0307, i0308, i0309;
  volatile Object i0310, i0311, i0312, i0313, i0314, i0315, i0316, i0317, i0318, i0319;
  volatile Object i0320, i0321, i0322, i0323, i0324, i0325, i0326, i0327, i0328, i0329;
  volatile Object i0330, i0331, i0332, i0333, i0334, i0335, i0336, i0337, i0338, i0339;
  volatile Object i0340, i0341, i0342, i0343, i0344, i0345, i0346, i0347, i0348, i0349;
  volatile Object i0350, i0351, i0352, i0353, i0354, i0355, i0356, i0357, i0358, i0359;
  volatile Object i0360, i0361, i0362, i0363, i0364, i0365, i0366, i0367, i0368, i0369;
  volatile Object i0370, i0371, i0372, i0373, i0374, i0375, i0376, i0377, i0378, i0379;
  volatile Object i0380, i0381, i0382, i0383, i0384, i0385, i0386, i0387, i0388, i0389;
  volatile Object i0390, i0391, i0392, i0393, i0394, i0395, i0396, i0397, i0398, i0399;

  volatile Object i0400, i0401, i0402, i0403, i0404, i0405, i0406, i0407, i0408, i0409;
  volatile Object i0410, i0411, i0412, i0413, i0414, i0415, i0416, i0417, i0418, i0419;
  volatile Object i0420, i0421, i0422, i0423, i0424, i0425, i0426, i0427, i0428, i0429;
  volatile Object i0430, i0431, i0432, i0433, i0434, i0435, i0436, i0437, i0438, i0439;
  volatile Object i0440, i0441, i0442, i0443, i0444, i0445, i0446, i0447, i0448, i0449;
  volatile Object i0450, i0451, i0452, i0453, i0454, i0455, i0456, i0457, i0458, i0459;
  volatile Object i0460, i0461, i0462, i0463, i0464, i0465, i0466, i0467, i0468, i0469;
  volatile Object i0470, i0471, i0472, i0473, i0474, i0475, i0476, i0477, i0478, i0479;
  volatile Object i0480, i0481, i0482, i0483, i0484, i0485, i0486, i0487, i0488, i0489;
  volatile Object i0490, i0491, i0492, i0493, i0494, i0495, i0496, i0497, i0498, i0499;

  volatile Object i0500, i0501, i0502, i0503, i0504, i0505, i0506, i0507, i0508, i0509;
  volatile Object i0510, i0511, i0512, i0513, i0514, i0515, i0516, i0517, i0518, i0519;
  volatile Object i0520, i0521, i0522, i0523, i0524, i0525, i0526, i0527, i0528, i0529;
  volatile Object i0530, i0531, i0532, i0533, i0534, i0535, i0536, i0537, i0538, i0539;
  volatile Object i0540, i0541, i0542, i0543, i0544, i0545, i0546, i0547, i0548, i0549;
  volatile Object i0550, i0551, i0552, i0553, i0554, i0555, i0556, i0557, i0558, i0559;
  volatile Object i0560, i0561, i0562, i0563, i0564, i0565, i0566, i0567, i0568, i0569;
  volatile Object i0570, i0571, i0572, i0573, i0574, i0575, i0576, i0577, i0578, i0579;
  volatile Object i0580, i0581, i0582, i0583, i0584, i0585, i0586, i0587, i0588, i0589;
  volatile Object i0590, i0591, i0592, i0593, i0594, i0595, i0596, i0597, i0598, i0599;

  volatile Object i0600, i0601, i0602, i0603, i0604, i0605, i0606, i0607, i0608, i0609;
  volatile Object i0610, i0611, i0612, i0613, i0614, i0615, i0616, i0617, i0618, i0619;
  volatile Object i0620, i0621, i0622, i0623, i0624, i0625, i0626, i0627, i0628, i0629;
  volatile Object i0630, i0631, i0632, i0633, i0634, i0635, i0636, i0637, i0638, i0639;
  volatile Object i0640, i0641, i0642, i0643, i0644, i0645, i0646, i0647, i0648, i0649;
  volatile Object i0650, i0651, i0652, i0653, i0654, i0655, i0656, i0657, i0658, i0659;
  volatile Object i0660, i0661, i0662, i0663, i0664, i0665, i0666, i0667, i0668, i0669;
  volatile Object i0670, i0671, i0672, i0673, i0674, i0675, i0676, i0677, i0678, i0679;
  volatile Object i0680, i0681, i0682, i0683, i0684, i0685, i0686, i0687, i0688, i0689;
  volatile Object i0690, i0691, i0692, i0693, i0694, i0695, i0696, i0697, i0698, i0699;

  volatile Object i0700, i0701, i0702, i0703, i0704, i0705, i0706, i0707, i0708, i0709;
  volatile Object i0710, i0711, i0712, i0713, i0714, i0715, i0716, i0717, i0718, i0719;
  volatile Object i0720, i0721, i0722, i0723, i0724, i0725, i0726, i0727, i0728, i0729;
  volatile Object i0730, i0731, i0732, i0733, i0734, i0735, i0736, i0737, i0738, i0739;
  volatile Object i0740, i0741, i0742, i0743, i0744, i0745, i0746, i0747, i0748, i0749;
  volatile Object i0750, i0751, i0752, i0753, i0754, i0755, i0756, i0757, i0758, i0759;
  volatile Object i0760, i0761, i0762, i0763, i0764, i0765, i0766, i0767, i0768, i0769;
  volatile Object i0770, i0771, i0772, i0773, i0774, i0775, i0776, i0777, i0778, i0779;
  volatile Object i0780, i0781, i0782, i0783, i0784, i0785, i0786, i0787, i0788, i0789;
  volatile Object i0790, i0791, i0792, i0793, i0794, i0795, i0796, i0797, i0798, i0799;

  volatile Object i0800, i0801, i0802, i0803, i0804, i0805, i0806, i0807, i0808, i0809;
  volatile Object i0810, i0811, i0812, i0813, i0814, i0815, i0816, i0817, i0818, i0819;
  volatile Object i0820, i0821, i0822, i0823, i0824, i0825, i0826, i0827, i0828, i0829;
  volatile Object i0830, i0831, i0832, i0833, i0834, i0835, i0836, i0837, i0838, i0839;
  volatile Object i0840, i0841, i0842, i0843, i0844, i0845, i0846, i0847, i0848, i0849;
  volatile Object i0850, i0851, i0852, i0853, i0854, i0855, i0856, i0857, i0858, i0859;
  volatile Object i0860, i0861, i0862, i0863, i0864, i0865, i0866, i0867, i0868, i0869;
  volatile Object i0870, i0871, i0872, i0873, i0874, i0875, i0876, i0877, i0878, i0879;
  volatile Object i0880, i0881, i0882, i0883, i0884, i0885, i0886, i0887, i0888, i0889;
  volatile Object i0890, i0891, i0892, i0893, i0894, i0895, i0896, i0897, i0898, i0899;

  volatile Object i0900, i0901, i0902, i0903, i0904, i0905, i0906, i0907, i0908, i0909;
  volatile Object i0910, i0911, i0912, i0913, i0914, i0915, i0916, i0917, i0918, i0919;
  volatile Object i0920, i0921, i0922, i0923, i0924, i0925, i0926, i0927, i0928, i0929;
  volatile Object i0930, i0931, i0932, i0933, i0934, i0935, i0936, i0937, i0938, i0939;
  volatile Object i0940, i0941, i0942, i0943, i0944, i0945, i0946, i0947, i0948, i0949;
  volatile Object i0950, i0951, i0952, i0953, i0954, i0955, i0956, i0957, i0958, i0959;
  volatile Object i0960, i0961, i0962, i0963, i0964, i0965, i0966, i0967, i0968, i0969;
  volatile Object i0970, i0971, i0972, i0973, i0974, i0975, i0976, i0977, i0978, i0979;
  volatile Object i0980, i0981, i0982, i0983, i0984, i0985, i0986, i0987, i0988, i0989;
  volatile Object i0990, i0991, i0992, i0993, i0994, i0995, i0996, i0997, i0998, i0999;

  volatile Object i1000, i1001, i1002, i1003, i1004, i1005, i1006, i1007, i1008, i1009;
  volatile Object i1010, i1011, i1012, i1013, i1014, i1015, i1016, i1017, i1018, i1019;
  volatile Object i1020, i1021, i1022, i1023, i1024, i1025, i1026, i1027, i1028, i1029;
  volatile Object i1030, i1031, i1032, i1033, i1034, i1035, i1036, i1037, i1038, i1039;
  volatile Object i1040, i1041, i1042, i1043, i1044, i1045, i1046, i1047, i1048, i1049;
  volatile Object i1050, i1051, i1052, i1053, i1054, i1055, i1056, i1057, i1058, i1059;
  volatile Object i1060, i1061, i1062, i1063, i1064, i1065, i1066, i1067, i1068, i1069;
  volatile Object i1070, i1071, i1072, i1073, i1074, i1075, i1076, i1077, i1078, i1079;
  volatile Object i1080, i1081, i1082, i1083, i1084, i1085, i1086, i1087, i1088, i1089;
  volatile Object i1090, i1091, i1092, i1093, i1094, i1095, i1096, i1097, i1098, i1099;


  // Note: ARM64, registers X16 and X17 are respectively IP0 and IP1,
  // the scratch registers used by the VIXL AArch64 assembler (and to
  // some extent, by ART's ARM64 code generator).

  /// CHECK-START-ARM64: void Main.testStaticVolatileFieldGetWithLargeOffset() disassembly (after)
  /// CHECK:               StaticFieldGet
  /// CHECK:                 mov <<Kind:x|w>><<Temp1:\d+>>, #<<Offset:0x[0-9a-f]{4}>>
  /// CHECK:                 add <<Kind>><<Temp2:\d+>>, <<Kind>>{{\d+}}, <<Kind>><<Temp1>>
  /// CHECK:                 ldar {{w\d+}}, [x<<Temp2>>]
  static void testStaticVolatileFieldGetWithLargeOffset() {
    // The offset of this static field cannot be encoded as an immediate on ARM64.
    Object s = s999;
  }

  /// CHECK-START-ARM64: void Main.testInstanceVolatileFieldGetWithLargeOffset() disassembly (after)
  /// CHECK:               InstanceFieldGet
  /// CHECK:                 mov <<Kind:x|w>><<Temp1:\d+>>, #<<Offset:0x[0-9a-f]{4}>>
  /// CHECK:                 add <<Kind>><<Temp2:\d+>>, <<Kind>>{{\d+}}, <<Kind>><<Temp1>>
  /// CHECK:                 ldar {{w\d+}}, [x<<Temp2>>]
  void testInstanceVolatileFieldGetWithLargeOffset() {
    // The offset of this instance field cannot be encoded as an immediate on ARM64.
    Object i = i1029;
  }


  public static void main(String[] args) {
    testStaticVolatileFieldGetWithLargeOffset();
    Main m = new Main();
    m.testInstanceVolatileFieldGetWithLargeOffset();
    System.out.println("passed");
  }

}