45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env python3
 | |
| #
 | |
| # Copyright (C) 2021 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.
 | |
| 
 | |
| TEMPLATE = """
 | |
| public class Main {
 | |
|   public static void main(String[] args) {
 | |
|     Main m = new Main();
 | |
|     System.out.println(m.foo(-1, -1));
 | |
|     System.out.println(m.foo(-1, +1));
 | |
|     System.out.println(m.foo(+1, -1));
 | |
|     System.out.println(m.foo(+1, +1));
 | |
|     System.out.println(m.value);
 | |
|   }
 | |
|   public int foo(int a, int b) {
 | |
|     if ( a >= 0 ) {
 | |
|       if ( b < 0 ) {
 | |
|         BODY
 | |
|         return 2;
 | |
|       }
 | |
|       return 1;
 | |
|     }
 | |
|     return 0;
 | |
|   }
 | |
|   Object lock = new Object();
 | |
|   int value = 0;
 | |
| }
 | |
| """
 | |
| 
 | |
| with open("src/Main.java", "wt") as dst:
 | |
|   body = " ".join(["synchronized(lock) { value++; }"] * 512)
 | |
|   dst.write(TEMPLATE.strip().replace("BODY", body))
 |