Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/opt/new1.C @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 // PR c++/39367 | |
2 // { dg-options "-O" } | |
3 | |
4 class QScriptEnginePrivate; | |
5 class QScriptClassInfo; | |
6 namespace QScript { | |
7 enum Type { InvalidType }; | |
8 }; | |
9 class QScriptValueImpl { | |
10 public: | |
11 inline QScriptValueImpl(); | |
12 QScript::Type m_type; | |
13 }; | |
14 namespace QScript { | |
15 namespace Ecma { | |
16 class Core { | |
17 public: | |
18 inline QScriptEnginePrivate *engine() const { } | |
19 inline QScriptClassInfo *classInfo() const { } | |
20 QScriptValueImpl publicPrototype; | |
21 }; | |
22 class Boolean: public Core { | |
23 void newBoolean(QScriptValueImpl *result, bool value = false); | |
24 }; | |
25 } | |
26 template <typename T> class Buffer { | |
27 public: | |
28 inline void reserve(int num); | |
29 inline void resize(int s); | |
30 T *m_data; | |
31 int m_capacity; | |
32 int m_size; | |
33 }; | |
34 } | |
35 template <typename T> void QScript::Buffer<T>::resize(int s) { | |
36 if (m_capacity < s) | |
37 reserve (s << 1); | |
38 } | |
39 template <typename T> void QScript::Buffer<T>::reserve(int x) { | |
40 T *new_data = new T[m_capacity]; | |
41 for (int i=0; i<m_size; ++i) | |
42 new_data[i] = m_data[i]; | |
43 } | |
44 class QScriptObject { | |
45 public: | |
46 inline void reset(); | |
47 QScript::Buffer<QScriptValueImpl> m_values; | |
48 }; | |
49 class QScriptEnginePrivate { | |
50 public: | |
51 inline QScriptObject *allocObject() { return 0; } | |
52 inline void newObject(QScriptValueImpl *o, const QScriptValueImpl &proto, | |
53 QScriptClassInfo *oc = 0); | |
54 }; | |
55 inline void QScriptEnginePrivate::newObject(QScriptValueImpl *o, | |
56 const QScriptValueImpl &proto, | |
57 QScriptClassInfo *oc) | |
58 { | |
59 QScriptObject *od = allocObject(); | |
60 od->reset(); | |
61 } | |
62 inline QScriptValueImpl::QScriptValueImpl() : m_type(QScript::InvalidType) { } | |
63 inline void QScriptObject::reset() { m_values.resize(0); } | |
64 namespace QScript { | |
65 namespace Ecma { | |
66 void Boolean::newBoolean(QScriptValueImpl *result, bool value) | |
67 { | |
68 engine()->newObject(result, publicPrototype, classInfo()); | |
69 } | |
70 } | |
71 } |