| Index: test/cctest/compiler/test-run-stubs.cc
|
| diff --git a/test/cctest/compiler/test-run-stubs.cc b/test/cctest/compiler/test-run-stubs.cc
|
| index 0e575710013151c125a300ba7b745f6afbe9e8f1..67c08b08d6452ae13eaff3d32e8cd5d48fcf3597 100644
|
| --- a/test/cctest/compiler/test-run-stubs.cc
|
| +++ b/test/cctest/compiler/test-run-stubs.cc
|
| @@ -2,13 +2,13 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "src/bootstrapper.h"
|
| #include "src/code-stubs.h"
|
| +#include "src/compiler/common-operator.h"
|
| #include "src/compiler/graph.h"
|
| #include "src/compiler/linkage.h"
|
| #include "src/compiler/pipeline.h"
|
| -#include "src/compiler/raw-machine-assembler.h"
|
| -#include "src/globals.h"
|
| -#include "src/handles.h"
|
| +#include "src/parser.h"
|
| #include "test/cctest/compiler/function-tester.h"
|
|
|
| #if V8_TURBOFAN_TARGET
|
| @@ -17,6 +17,20 @@ using namespace v8::internal;
|
| using namespace v8::internal::compiler;
|
|
|
|
|
| +static Handle<JSFunction> GetFunction(Isolate* isolate, const char* name) {
|
| + v8::ExtensionConfiguration no_extensions;
|
| + Handle<Context> ctx = isolate->bootstrapper()->CreateEnvironment(
|
| + MaybeHandle<JSGlobalProxy>(), v8::Handle<v8::ObjectTemplate>(),
|
| + &no_extensions);
|
| + Handle<JSBuiltinsObject> builtins = handle(ctx->builtins());
|
| + MaybeHandle<Object> fun = Object::GetProperty(isolate, builtins, name);
|
| + Handle<JSFunction> function = Handle<JSFunction>::cast(fun.ToHandleChecked());
|
| + // Just to make sure nobody calls this...
|
| + function->set_code(isolate->builtins()->builtin(Builtins::kIllegal));
|
| + return function;
|
| +}
|
| +
|
| +
|
| class StringLengthStubTF : public CodeStub {
|
| public:
|
| explicit StringLengthStubTF(Isolate* isolate) : CodeStub(isolate) {}
|
| @@ -28,18 +42,13 @@ class StringLengthStubTF : public CodeStub {
|
| };
|
|
|
| Handle<Code> GenerateCode() OVERRIDE {
|
| - CompilationInfoWithZone info(this, isolate());
|
| - Graph graph(info.zone());
|
| - CallDescriptor* descriptor = Linkage::ComputeIncoming(info.zone(), &info);
|
| - RawMachineAssembler m(isolate(), &graph, descriptor->GetMachineSignature());
|
| -
|
| - Node* str = m.Load(kMachAnyTagged, m.Parameter(0),
|
| - m.Int32Constant(JSValue::kValueOffset - kHeapObjectTag));
|
| - Node* len = m.Load(kMachAnyTagged, str,
|
| - m.Int32Constant(String::kLengthOffset - kHeapObjectTag));
|
| - m.Return(len);
|
| -
|
| - return Pipeline::GenerateCodeForTesting(&info, &graph, m.Export());
|
| + // Build a "hybrid" CompilationInfo for a JSFunction/CodeStub pair.
|
| + CompilationInfoWithZone info(GetFunction(isolate(), "STRING_LENGTH_STUB"));
|
| + info.SetStub(this);
|
| + // Run a "mini pipeline", extracted from compiler.cc.
|
| + CHECK(Parser::ParseStatic(info.parse_info()));
|
| + CHECK(Compiler::Analyze(info.parse_info()));
|
| + return Pipeline(&info).GenerateCode();
|
| }
|
|
|
| Major MajorKey() const OVERRIDE { return StringLength; };
|
|
|