Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf338326 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Factor out repeated shift instructions to reduce code size"

parents 81a102b3 d520db53
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -428,7 +428,7 @@ void JavaClassGenerator::ProcessStyleable(const ResourceNameRef& name, const Res
    out_rewrite_method->AppendStatement(
        StringPrintf("  if ((styleable.%s[i] & 0xff000000) == 0) {", array_field_name.data()));
    out_rewrite_method->AppendStatement(
        StringPrintf("    styleable.%s[i] = (styleable.%s[i] & 0x00ffffff) | (p << 24);",
        StringPrintf("    styleable.%s[i] = (styleable.%s[i] & 0x00ffffff) | packageIdBits;",
                     array_field_name.data(), array_field_name.data()));
    out_rewrite_method->AppendStatement("  }");
    out_rewrite_method->AppendStatement("}");
@@ -487,9 +487,9 @@ void JavaClassGenerator::ProcessResource(const ResourceNameRef& name, const Reso

  if (out_rewrite_method != nullptr) {
    const StringPiece& type_str = to_string(name.type);
    out_rewrite_method->AppendStatement(StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | (p << 24);",
                                                     type_str.data(), field_name.data(),
                                                     type_str.data(), field_name.data()));
    out_rewrite_method->AppendStatement(
        StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | packageIdBits;", type_str.data(),
                     field_name.data(), type_str.data(), field_name.data()));
  }
}

@@ -599,6 +599,7 @@ bool JavaClassGenerator::Generate(const StringPiece& package_name_to_generate,
      rewrite_method->AppendStatement(
          StringPrintf("%s.R.onResourcesLoaded(p);", package_to_callback.data()));
    }
    rewrite_method->AppendStatement("final int packageIdBits = p << 24;");
  }

  for (const auto& package : table_->packages) {
+9 −3
Original line number Diff line number Diff line
@@ -522,9 +522,15 @@ TEST(JavaClassGeneratorTest, GenerateOnResourcesLoadedCallbackForSharedLibrary)
  ASSERT_TRUE(generator.Generate("android", &out));
  out.Flush();

  EXPECT_THAT(output, HasSubstr("void onResourcesLoaded"));
  EXPECT_THAT(output, HasSubstr("com.foo.R.onResourcesLoaded"));
  EXPECT_THAT(output, HasSubstr("com.boo.R.onResourcesLoaded"));
  EXPECT_THAT(output, HasSubstr(
          R"(  public static void onResourcesLoaded(int p) {
    com.foo.R.onResourcesLoaded(p);
    com.boo.R.onResourcesLoaded(p);
    final int packageIdBits = p << 24;
    attr.foo = (attr.foo & 0x00ffffff) | packageIdBits;
    id.foo = (id.foo & 0x00ffffff) | packageIdBits;
    style.foo = (style.foo & 0x00ffffff) | packageIdBits;
  })"));
}

TEST(JavaClassGeneratorTest, OnlyGenerateRText) {