MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / UNIT

Function UNIT

lib/asmjit/asmjit/core/codeholder.cpp:1378–1430  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1376
1377#if defined(ASMJIT_TEST)
1378UNIT(code_holder) {
1379 CodeHolder code;
1380
1381 INFO("Verifying CodeHolder::init()");
1382 Environment env;
1383 env.init(Arch::kX86);
1384
1385 code.init(env);
1386 EXPECT_EQ(code.arch(), Arch::kX86);
1387
1388 INFO("Verifying named labels");
1389 uint32_t dummy_id;
1390 uint32_t label_id1;
1391 uint32_t label_id2;
1392
1393 // Anonymous labels can have no-name (this is basically like calling `code.new_label_id()`).
1394 EXPECT_EQ(code.new_named_label_id(Out(dummy_id), "", SIZE_MAX, LabelType::kAnonymous), Error::kOk);
1395
1396 // Global labels must have a name - not providing one is an error.
1397 EXPECT_EQ(code.new_named_label_id(Out(dummy_id), "", SIZE_MAX, LabelType::kGlobal), Error::kInvalidLabelName);
1398
1399 // A name of a global label cannot repeat.
1400 EXPECT_EQ(code.new_named_label_id(Out(label_id1), "NamedLabel1", SIZE_MAX, LabelType::kGlobal), Error::kOk);
1401 EXPECT_EQ(code.new_named_label_id(Out(dummy_id), "NamedLabel1", SIZE_MAX, LabelType::kGlobal), Error::kLabelAlreadyDefined);
1402 EXPECT_TRUE(code.is_label_valid(label_id1));
1403 EXPECT_EQ(code.label_entry_of(label_id1).name_size(), 11u);
1404 EXPECT_EQ(strcmp(code.label_entry_of(label_id1).name(), "NamedLabel1"), 0);
1405 EXPECT_EQ(code.label_id_by_name("NamedLabel1"), label_id1);
1406
1407 EXPECT_EQ(code.new_named_label_id(Out(label_id2), "NamedLabel2", SIZE_MAX, LabelType::kGlobal), Error::kOk);
1408 EXPECT_EQ(code.new_named_label_id(Out(dummy_id), "NamedLabel2", SIZE_MAX, LabelType::kGlobal), Error::kLabelAlreadyDefined);
1409 EXPECT_TRUE(code.is_label_valid(label_id2));
1410 EXPECT_EQ(code.label_entry_of(label_id2).name_size(), 11u);
1411 EXPECT_EQ(strcmp(code.label_entry_of(label_id2).name(), "NamedLabel2"), 0);
1412 EXPECT_EQ(code.label_id_by_name("NamedLabel2"), label_id2);
1413
1414 INFO("Verifying section ordering");
1415 Section* section1;
1416 EXPECT_EQ(code.new_section(Out(section1), "high-priority", SIZE_MAX, SectionFlags::kNone, 1, -1), Error::kOk);
1417 EXPECT_EQ(code.sections()[1], section1);
1418 EXPECT_EQ(code.sections_by_order()[0], section1);
1419
1420 Section* section0;
1421 EXPECT_EQ(code.new_section(Out(section0), "higher-priority", SIZE_MAX, SectionFlags::kNone, 1, -2), Error::kOk);
1422 EXPECT_EQ(code.sections()[2], section0);
1423 EXPECT_EQ(code.sections_by_order()[0], section0);
1424 EXPECT_EQ(code.sections_by_order()[1], section1);
1425
1426 Section* section3;
1427 EXPECT_EQ(code.new_section(Out(section3), "low-priority", SIZE_MAX, SectionFlags::kNone, 1, 2), Error::kOk);
1428 EXPECT_EQ(code.sections()[3], section3);
1429 EXPECT_EQ(code.sections_by_order()[3], section3);
1430}
1431#endif
1432
1433ASMJIT_END_NAMESPACE

Callers

nothing calls this directly

Calls 11

OutClass · 0.85
new_named_label_idMethod · 0.80
new_sectionMethod · 0.80
sectionsMethod · 0.80
sections_by_orderMethod · 0.80
initMethod · 0.45
archMethod · 0.45
is_label_validMethod · 0.45
name_sizeMethod · 0.45
nameMethod · 0.45
label_id_by_nameMethod · 0.45

Tested by

no test coverage detected