diff options
Diffstat (limited to 'deps/v8/test/cctest/test-factory.cc')
-rw-r--r-- | deps/v8/test/cctest/test-factory.cc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/deps/v8/test/cctest/test-factory.cc b/deps/v8/test/cctest/test-factory.cc new file mode 100644 index 0000000000..a282f4bccd --- /dev/null +++ b/deps/v8/test/cctest/test-factory.cc @@ -0,0 +1,46 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "include/v8.h" + +#include "src/handles-inl.h" +#include "src/isolate.h" +#include "test/cctest/cctest.h" + +namespace v8 { +namespace internal { +namespace test_factory { + +TEST(Factory_NewCode) { + LocalContext env; + v8::Isolate* isolate = env->GetIsolate(); + Isolate* i_isolate = reinterpret_cast<Isolate*>(isolate); + HandleScope scope(i_isolate); + + // Create a big function that ends up in CODE_LO_SPACE. + const int instruction_size = kMaxRegularHeapObjectSize + 1; + std::unique_ptr<byte[]> instructions(new byte[instruction_size]); + + CodeDesc desc; + desc.buffer = instructions.get(); + desc.buffer_size = instruction_size; + desc.instr_size = instruction_size; + desc.reloc_size = 0; + desc.constant_pool_size = 0; + desc.unwinding_info = nullptr; + desc.unwinding_info_size = 0; + desc.origin = nullptr; + Handle<Object> self_ref; + Handle<Code> code = + i_isolate->factory()->NewCode(desc, Code::WASM_FUNCTION, self_ref); + + CHECK(i_isolate->heap()->InSpace(*code, CODE_LO_SPACE)); +#if VERIFY_HEAP + code->ObjectVerify(i_isolate); +#endif +} + +} // namespace test_factory +} // namespace internal +} // namespace v8 |