Lines 264-270
sub set_in_cache {
Link Here
|
264 |
|
264 |
|
265 |
my $flag = '-CF0'; # 0: scalar, 1: frozen data structure |
265 |
my $flag = '-CF0'; # 0: scalar, 1: frozen data structure |
266 |
if (ref($value)) { |
266 |
if (ref($value)) { |
267 |
# Set in L1 cache as a data structure, initially only in frozen form (for performance reasons) |
267 |
# Set in L1 cache as a data structure |
|
|
268 |
# We only save the frozen form: we do want to save $value in L1 |
269 |
# directly in order to protect it. And thawing now may not be |
270 |
# needed, so improves performance. |
268 |
$value = $L1_encoder->encode($value); |
271 |
$value = $L1_encoder->encode($value); |
269 |
$L1_cache{$key}->{frozen} = $value; |
272 |
$L1_cache{$key}->{frozen} = $value; |
270 |
$flag = '-CF1'; |
273 |
$flag = '-CF1'; |
Lines 275-281
sub set_in_cache {
Link Here
|
275 |
} |
278 |
} |
276 |
|
279 |
|
277 |
$value .= $flag; |
280 |
$value .= $flag; |
278 |
# We consider an expiry of 0 to be inifinite |
281 |
# We consider an expiry of 0 to be infinite |
279 |
if ( $expiry ) { |
282 |
if ( $expiry ) { |
280 |
return $set_sub |
283 |
return $set_sub |
281 |
? $set_sub->( $key, $value, $expiry ) |
284 |
? $set_sub->( $key, $value, $expiry ) |
Lines 327-332
sub get_from_cache {
Link Here
|
327 |
if ( exists $L1_cache{$key} ) { |
330 |
if ( exists $L1_cache{$key} ) { |
328 |
if (ref($L1_cache{$key})) { |
331 |
if (ref($L1_cache{$key})) { |
329 |
if ($unsafe) { |
332 |
if ($unsafe) { |
|
|
333 |
# ONLY use thawed for unsafe calls !!! |
330 |
$L1_cache{$key}->{thawed} ||= $L1_decoder->decode($L1_cache{$key}->{frozen}); |
334 |
$L1_cache{$key}->{thawed} ||= $L1_decoder->decode($L1_cache{$key}->{frozen}); |
331 |
return $L1_cache{$key}->{thawed}; |
335 |
return $L1_cache{$key}->{thawed}; |
332 |
} else { |
336 |
} else { |
Lines 355-360
sub get_from_cache {
Link Here
|
355 |
eval { $thawed = $L1_decoder->decode($L2_value); }; |
359 |
eval { $thawed = $L1_decoder->decode($L2_value); }; |
356 |
return if $@; |
360 |
return if $@; |
357 |
$L1_cache{$key}->{frozen} = $L2_value; |
361 |
$L1_cache{$key}->{frozen} = $L2_value; |
|
|
362 |
# ONLY save thawed for unsafe calls !!! |
358 |
$L1_cache{$key}->{thawed} = $thawed if $unsafe; |
363 |
$L1_cache{$key}->{thawed} = $thawed if $unsafe; |
359 |
return $thawed; |
364 |
return $thawed; |
360 |
} |
365 |
} |
361 |
- |
|
|