12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/* 22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2011 The Android Open Source Project 32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License. 62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at 72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software 112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and 142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License. 152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */ 169407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao 179407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liaopublic class StackWalk2 { 189407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao // use v1 for this 199407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao 209407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao String str = new String(); // use v0 for str in <init> 219407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao 229407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao int f() { 239407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao g(1); // use v0 for 1, v1 for this 249407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao g(2); // use v0 for 2, v1 for this 259407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao strTest(); // use v1 for this 269407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao return 0; 279407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao } 289407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao 299407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao void g(int num_calls) throws RuntimeException { 309407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao if (num_calls == 1) { // use v0 for 1, v3 for num_calls 319407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao System.logI("1st call"); // use v0 for PrintStream, v1 for "1st call" 329407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao refmap2(24); // use v0 for 24, v2 for this 339407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao } else if (num_calls == 2) { // use v0 for 2, v3 for num_calls 349407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao System.logI("2nd call"); // use v0 for PrintStream, v1 for "2nd call" 359407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao refmap2(25); // use v0 for 24, v2 for this 369407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao } 379407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao throw new RuntimeException(); // use v0 for new RuntimeException 389407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao } 399407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao 409407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao void strTest() { 419407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao System.logI(str); // use v1 for PrintStream, v2, v3 for str 429407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao str = null; // use v1 for null, v3 for str 439407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao str = new String("ya"); // use v2 for "ya", v1 for new String 449407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao String s = str; // use v0, v1, v3 459407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao System.logI(str); // use v1 for PrintStream, v2, v3 for str 469407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao System.logI(s); // use v1 for PrintStream, v0 for s 479407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao s = null; // use v0 489407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao System.logI(s); // use v1 for PrintStream, v0 for s 499407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao } 509407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao 519407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao native int refmap2(int x); 529407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao 539407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao static { 549407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao System.loadLibrary("arttest"); 559407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao } 569407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao 579407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao public static void main(String[] args) { 589407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao StackWalk2 st = new StackWalk2(); 599407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao st.f(); 609407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao } 619407c60800c95902fba0b3c3265520d47c1e7052Shih-wei Liao} 62