Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index 41fc8eaf3e38df11d5413ad0c047275a54990d40..ad09dc24a400d8d0367fecbfd76f60dd7f9f9632 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -812,17 +812,27 @@ class FastNewClosureStub : public TurboFanCodeStub { |
class FastNewFunctionContextStub final : public TurboFanCodeStub { |
public: |
- static const int kMaximumSlots = 0x8000; |
+ static int MaximumSlots(); |
- explicit FastNewFunctionContextStub(Isolate* isolate) |
- : TurboFanCodeStub(isolate) {} |
+ explicit FastNewFunctionContextStub(Isolate* isolate, ScopeType scope_type) |
+ : TurboFanCodeStub(isolate) { |
+ minor_key_ = ScopeTypeBits::encode(scope_type); |
+ } |
static compiler::Node* Generate(CodeStubAssembler* assembler, |
compiler::Node* function, |
compiler::Node* slots, |
- compiler::Node* context); |
+ compiler::Node* context, |
+ ScopeType scope_type); |
+ |
+ ScopeType scope_type() const { |
+ return static_cast<ScopeType>(ScopeTypeBits::decode(minor_key_)); |
+ } |
private: |
+ static const int kMaximumSlots = 0x8000; |
+ static const int kSmallMaximumSlots = 10; |
+ |
// FastNewFunctionContextStub can only allocate closures which fit in the |
// new space. |
STATIC_ASSERT(((kMaximumSlots + Context::MIN_CONTEXT_SLOTS) * kPointerSize + |
@@ -830,8 +840,9 @@ class FastNewFunctionContextStub final : public TurboFanCodeStub { |
DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewFunctionContext); |
DEFINE_TURBOFAN_CODE_STUB(FastNewFunctionContext, TurboFanCodeStub); |
-}; |
+ class ScopeTypeBits : public BitField<bool, 0, 8> {}; |
Michael Starzinger
2016/12/15 09:42:59
nit: Can we move this up three lines, so that the
Dan Ehrenberg
2016/12/15 23:51:50
Done.
|
+}; |
class FastNewObjectStub final : public PlatformCodeStub { |
public: |