| Index: src/code-stubs.h
|
| ===================================================================
|
| --- src/code-stubs.h (revision 8110)
|
| +++ src/code-stubs.h (working copy)
|
| @@ -75,7 +75,7 @@
|
| V(KeyedLoadExternalArray) \
|
| V(KeyedStoreExternalArray) \
|
| V(DebuggerStatement) \
|
| - V(StringDictionaryNegativeLookup)
|
| + V(StringDictionaryLookup)
|
|
|
| // List of code stubs only used on ARM platforms.
|
| #ifdef V8_TARGET_ARCH_ARM
|
| @@ -144,6 +144,13 @@
|
|
|
| virtual ~CodeStub() {}
|
|
|
| + // See comment above, where Instanceof is defined.
|
| + virtual bool CompilingCallsToThisStubIsGCSafe() {
|
| + return MajorKey() <= Instanceof;
|
| + }
|
| +
|
| + virtual bool SometimesSetsUpAFrame() { return true; }
|
| +
|
| protected:
|
| static const int kMajorBits = 6;
|
| static const int kMinorBits = kBitsPerInt - kSmiTagSize - kMajorBits;
|
| @@ -200,9 +207,6 @@
|
| MajorKeyBits::encode(MajorKey());
|
| }
|
|
|
| - // See comment above, where Instanceof is defined.
|
| - bool AllowsStubCalls() { return MajorKey() <= Instanceof; }
|
| -
|
| class MajorKeyBits: public BitField<uint32_t, 0, kMajorBits> {};
|
| class MinorKeyBits: public BitField<uint32_t, kMajorBits, kMinorBits> {};
|
|
|
| @@ -575,6 +579,11 @@
|
| void Generate(MacroAssembler* masm);
|
| void SaveDoubles() { save_doubles_ = true; }
|
|
|
| + // The version of this stub that doesn't save doubles is generated ahead of
|
| + // time, so it's OK to call it from other stubs that can't cope with GC during
|
| + // their code generation.
|
| + virtual bool CompilingCallsToThisStubIsGCSafe() { return !save_doubles_; }
|
| +
|
| private:
|
| void GenerateCore(MacroAssembler* masm,
|
| Label* throw_normal_exception,
|
|
|