Skip to content

Commit a4e9666

Browse files
Revert "Add thread safety to property macros with lazy initializers (#15548)" (#15557)
This reverts commit 4d0306e.
1 parent f83654a commit a4e9666

File tree

3 files changed

+18
-60
lines changed

3 files changed

+18
-60
lines changed

scripts/generate_object_properties.cr

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -66,42 +66,20 @@ struct Generator
6666
end
6767

6868
def def_getter(suffix = "")
69-
if @macro_prefix == "class_"
70-
<<-TEXT
71-
{% if block %} @@__{{var_name}}_flag = false {% end %}
72-
73-
def self.{{var_name}}#{suffix} {% if type %} : {{type}} {% end %}
74-
{% if block %}
75-
if (%value = @@{{var_name}}).nil?
76-
::Crystal.once(pointerof(@@__{{var_name}}_flag)) do
77-
@@{{var_name}} = {{yield}} if @@{{var_name}}.nil?
78-
end
79-
@@{{var_name}}.not_nil!
80-
else
81-
%value
82-
end
83-
{% else %}
84-
@@{{var_name}}
85-
{% end %}
86-
end
87-
88-
TEXT
89-
else
90-
<<-TEXT
91-
def {{var_name}}#{suffix} {% if type %} : {{type}} {% end %}
92-
{% if block %}
93-
if (%value = @{{var_name}}).nil?
94-
@{{var_name}} = {{yield}}
95-
else
96-
%value
97-
end
98-
{% else %}
99-
@{{var_name}}
100-
{% end %}
101-
end
69+
<<-TEXT
70+
def #{@method_prefix}{{var_name}}#{suffix} {% if type %} : {{type}} {% end %}
71+
{% if block %}
72+
if (%value = #{@var_prefix}{{var_name}}).nil?
73+
#{@var_prefix}{{var_name}} = {{yield}}
74+
else
75+
%value
76+
end
77+
{% else %}
78+
#{@var_prefix}{{var_name}}
79+
{% end %}
80+
end
10281
103-
TEXT
104-
end
82+
TEXT
10583
end
10684

10785
def def_getter!

src/object/properties.cr

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -334,15 +334,10 @@ class Object
334334
{% type = nil %}
335335
{% end %}
336336

337-
{% if block %} @@__{{var_name}}_flag = false {% end %}
338-
339337
def self.{{var_name}} {% if type %} : {{type}} {% end %}
340338
{% if block %}
341339
if (%value = @@{{var_name}}).nil?
342-
::Crystal.once(pointerof(@@__{{var_name}}_flag)) do
343-
@@{{var_name}} = {{yield}} if @@{{var_name}}.nil?
344-
end
345-
@@{{var_name}}.not_nil!
340+
@@{{var_name}} = {{yield}}
346341
else
347342
%value
348343
end
@@ -394,15 +389,10 @@ class Object
394389
{% type = nil %}
395390
{% end %}
396391

397-
{% if block %} @@__{{var_name}}_flag = false {% end %}
398-
399392
def self.{{var_name}}? {% if type %} : {{type}} {% end %}
400393
{% if block %}
401394
if (%value = @@{{var_name}}).nil?
402-
::Crystal.once(pointerof(@@__{{var_name}}_flag)) do
403-
@@{{var_name}} = {{yield}} if @@{{var_name}}.nil?
404-
end
405-
@@{{var_name}}.not_nil!
395+
@@{{var_name}} = {{yield}}
406396
else
407397
%value
408398
end
@@ -538,15 +528,10 @@ class Object
538528
{% type = nil %}
539529
{% end %}
540530

541-
{% if block %} @@__{{var_name}}_flag = false {% end %}
542-
543531
def self.{{var_name}} {% if type %} : {{type}} {% end %}
544532
{% if block %}
545533
if (%value = @@{{var_name}}).nil?
546-
::Crystal.once(pointerof(@@__{{var_name}}_flag)) do
547-
@@{{var_name}} = {{yield}} if @@{{var_name}}.nil?
548-
end
549-
@@{{var_name}}.not_nil!
534+
@@{{var_name}} = {{yield}}
550535
else
551536
%value
552537
end
@@ -584,15 +569,10 @@ class Object
584569
{% type = nil %}
585570
{% end %}
586571

587-
{% if block %} @@__{{var_name}}_flag = false {% end %}
588-
589572
def self.{{var_name}}? {% if type %} : {{type}} {% end %}
590573
{% if block %}
591574
if (%value = @@{{var_name}}).nil?
592-
::Crystal.once(pointerof(@@__{{var_name}}_flag)) do
593-
@@{{var_name}} = {{yield}} if @@{{var_name}}.nil?
594-
end
595-
@@{{var_name}}.not_nil!
575+
@@{{var_name}} = {{yield}}
596576
else
597577
%value
598578
end

src/prelude.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
require "lib_c"
1212
require "macros"
1313
require "object"
14-
require "crystal/main"
1514
require "crystal/once"
1615
require "comparable"
1716
require "exception"
@@ -35,6 +34,7 @@ require "char/reader"
3534
require "class"
3635
require "concurrent"
3736
require "crystal/compiler_rt"
37+
require "crystal/main"
3838
require "deque"
3939
require "dir"
4040
require "enum"

0 commit comments

Comments
 (0)