コード例 #1
0
    public void add(
        String jsIdent,
        String jsniIdent,
        String className,
        String memberName,
        String runtimeTypeId,
        CastableTypeData castableTypeData) {

      oracle.idents.add(jsIdent);
      ClassData data = oracle.getClassData(className);

      /*
       * Don't overwrite castableTypeData and runtimeTypeId if already set.
       * There are many versions of symbols for a given className,
       * corresponding to the type of member fields, etc.,
       * which don't have the runtimeTypeId or castableTypeData initialized.  Only
       * the symbol data for the class itself has this info.
       */
      if (data.castableTypeData == null) {
        data.runtimeTypeId = runtimeTypeId;
        data.castableTypeData = castableTypeData;
      }

      if (jsniIdent == null || jsniIdent.length() == 0) {
        data.typeName = className;
        data.jsSymbolName = jsIdent;
        oracle.seedNamesToClassData.put(jsIdent, data);
        // Class.getName() with metadata disabled is "Class$S<seedId>"
        oracle.seedIdsToClassData.put("S" + runtimeTypeId, data);
        data.runtimeTypeId = runtimeTypeId;
      } else {
        if (jsniIdent.contains("(")) {
          jsniIdent = jsniIdent.substring(jsniIdent.indexOf("::") + 2, jsniIdent.indexOf(')') + 1);
          data.methodJsniNamesToIdents.put(jsniIdent, jsIdent);
        } else {
          data.fieldIdentsToNames.put(jsIdent, memberName);
          data.fieldNamesToIdents.put(memberName, jsIdent);
        }
      }
    }