PageRenderTime 26ms CodeModel.GetById 15ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 1ms

/testability-explorer/src/main/java/com/google/test/metric/method/op/stack/PutField.java

http://testability-explorer.googlecode.com/
Java | 59 lines | 35 code | 9 blank | 15 comment | 2 complexity | fdcbe8711c2ea1495098c02017c6e010 MD5 | raw file
 1/*
 2 * Copyright 2007 Google Inc.
 3 *
 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 5 * use this file except in compliance with the License. You may obtain a copy of
 6 * the License at
 7 *
 8 * http://www.apache.org/licenses/LICENSE-2.0
 9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16package com.google.test.metric.method.op.stack;
17
18import java.util.List;
19
20import com.google.test.metric.FieldInfo;
21import com.google.test.metric.JavaType;
22import com.google.test.metric.Variable;
23import com.google.test.metric.method.op.turing.FieldAssignment;
24import com.google.test.metric.method.op.turing.Operation;
25
26public class PutField extends StackOperation {
27
28  private final FieldInfo fieldInfo;
29
30  public PutField(int lineNumber, FieldInfo fieldInfo) {
31    super(lineNumber);
32    this.fieldInfo = fieldInfo;
33  }
34
35  @Override
36  public String toString() {
37    return "put " + (fieldInfo.isGlobal() ? "static " : "") + fieldInfo;
38  }
39
40  @Override
41  public int getOperatorCount() {
42    int valueCount = JavaType.isDoubleSlot(fieldInfo.getType()) ? 2 : 1;
43    int fieldThis = fieldInfo.isGlobal() ? 0 : 1;
44    return valueCount + fieldThis;
45  }
46
47  @Override
48  public Operation toOperation(List<Variable> input) {
49    if (fieldInfo.isGlobal()) {
50      Variable value = input.get(0);
51      return new FieldAssignment(lineNumber, null, fieldInfo, value);
52    } else {
53      Variable instance = input.get(0);
54      Variable value = input.get(1);
55      return new FieldAssignment(lineNumber, instance, fieldInfo, value);
56    }
57  }
58
59}