| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 4823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4834 static volatile uintptr_t s_workerObjectPointer; | 4834 static volatile uintptr_t s_workerObjectPointer; |
| 4835 }; | 4835 }; |
| 4836 | 4836 |
| 4837 volatile uintptr_t DeadBitTester::s_workerObjectPointer = 0; | 4837 volatile uintptr_t DeadBitTester::s_workerObjectPointer = 0; |
| 4838 | 4838 |
| 4839 TEST(HeapTest, ObjectDeadBit) | 4839 TEST(HeapTest, ObjectDeadBit) |
| 4840 { | 4840 { |
| 4841 DeadBitTester::test(); | 4841 DeadBitTester::test(); |
| 4842 } | 4842 } |
| 4843 | 4843 |
| 4844 class MixinWithGarbageCollectionInConstructor : public GarbageCollectedMixin { |
| 4845 public: |
| 4846 MixinWithGarbageCollectionInConstructor() |
| 4847 { |
| 4848 Heap::collectGarbage(ThreadState::HeapPointersOnStack); |
| 4849 } |
| 4850 }; |
| 4851 |
| 4852 class ClassWithGarbageCollectingMixinConstructor |
| 4853 : public GarbageCollected<ClassWithGarbageCollectingMixinConstructor> |
| 4854 , public MixinWithGarbageCollectionInConstructor { |
| 4855 USING_GARBAGE_COLLECTED_MIXIN(ClassWithGarbageCollectingMixinConstructor); |
| 4856 public: |
| 4857 ClassWithGarbageCollectingMixinConstructor() : m_wrapper(IntWrapper::create(
32)) |
| 4858 { |
| 4859 } |
| 4860 |
| 4861 virtual void trace(Visitor* visitor) |
| 4862 { |
| 4863 visitor->trace(m_wrapper); |
| 4864 } |
| 4865 |
| 4866 void verify() |
| 4867 { |
| 4868 EXPECT_EQ(32, m_wrapper->value()); |
| 4869 } |
| 4870 |
| 4871 private: |
| 4872 Member<IntWrapper> m_wrapper; |
| 4873 }; |
| 4874 |
| 4875 // Regression test for out of bounds call through vtable. |
| 4876 // Passes if it doesn't crash. |
| 4877 TEST(HeapTest, GarbageCollectionDuringMixinConstruction) |
| 4878 { |
| 4879 ClassWithGarbageCollectingMixinConstructor* a = |
| 4880 new ClassWithGarbageCollectingMixinConstructor(); |
| 4881 a->verify(); |
| 4882 } |
| 4883 |
| 4844 } // WebCore namespace | 4884 } // WebCore namespace |
| OLD | NEW |